Как может быть возвращено значение заглушки OCMock изменено?

Переверните вопрос: шаблон mtch Вы должен делать, "какой шаблон соответствует моей проблеме". Рассмотрите действительно простой шаблон, найдя элемент в массиве. в C это похоже на что-то

TYPE_t ary[SIZE] = // ... gets initialized somehow
size_t ix ;        // Your index variable

for(ix=0; ix < SIZE; ix++){
    if (ary[ix] == item) {
       return ix ;
    }
}

, Вы не смотрите на код и думаете, "где я могу использовать это", Вы смотрите на проблему и говорите, что "я знаю, как найти элемент в массиве?"

С более обширными шаблонами действительно работы тот же путь. У Вас должны быть много много копий структуры данных, которая часто не изменяется---, который заставляет Вас думать "Боксер наилегчайшего веса". Вы хотите что-то, что живет с обеих сторон границы сети, Вы думаете Прокси.

при изучении шаблонов, особенно GoF, спрашиваете себя, "какие ситуации призывают к этому шаблону? Я видел этот шаблон прежде? Для чего я, возможно, использовал это в предыдущей работе? Где я могу найти пример этого в моей собственной жизни?"

25
задан Cris 14 April 2011 в 20:56
поделиться

1 ответ

Похоже, ни andReturn / andReturnValue / andDo не переопределяется при вызове несколько раз. Мой обходной путь - добавить свойство в тестовый класс и использовать его для контроля того, что должен возвращать макетируемый объект. Например, в случае свойства isAvailable для макетируемого объекта мой код будет выглядеть так:

@interface MyTest: XCTestCase 
@property BOOL stubbedIsAvailable;
@end

@implementation MyTest

- (void)setUp {
    [OCMStub([myMockedObject isAvailable]) andDo:^(NSInvocation invocation) {
        BOOL retVal = self.stubbedIsAvailable;
        [invocation setReturnValue:&retVal];
    }
}

- (void)testBehaviourWhenIsAvailable {
    self.stubbedIsAvailable = YES;
    // test the unit
}

- (void)testBehaviourWhenIsNotAvailable {
    self.stubbedIsAvailable = NOT;
    // test the unit
}
1
ответ дан 28 November 2019 в 18:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: