Если вы используете метод mockForClass:
, вам нужно будет предоставить заглушенные реализации для каждого метода, вызываемого в проверяемом классе.включив в него ваш вызов с помощью [controller smallAdRight] в вашем первом тесте.
Вместо этого вы можете использовать метод niceMockForClass:
, который будет просто игнорировать любые сообщения, которые не являются поддельными.создать экземпляр вашего AdViewController
, а затем создать для него частичный макет, используя метод partialMockForObject:
.Таким образом, внутренняя часть класса контроллера будет выполнять основную часть работы.
Хотя бы ... Вы пытаетесь протестировать AdViewController или класс, который его использует?Похоже, вы пытаетесь смоделировать весь класс, а затем проверить, все ли он ведет себя нормально.Если вы хотите проверить, что AdViewController
ведет себя так, как ожидалось, при вводе определенных значений, то, скорее всего, лучшим вариантом будет partialMockForObject:
метод:
- (void)testDoubleConfigurationLayout {
AdViewController *controller = [AdViewController alloc];
id mock = [OCMockObject partialMockForObject:controller];
AdConfigurationType type = AdConfigurationTypeDouble;
[[[mock stub] andReturnValue:OCMOCK_VALUE(type)] adConfigurationType];
// You'll want to call init after the object have been stubbed
[controller init]
STAssertNotNil([controller smallAdRight], @"Expected a value here");
STAssertNotNil([controller smallAdRight], @"Expected a value here");
STAssertNil([controller largeAd], @"Expected nil here");
}