我一直在研究iOS编程的单元测试,并且在尝试通过嘲弄它来验证我的主类时遇到了一些小问题子类使用OCMock,然后查看主类是否添加子控制器(mockObjects [uiviewContoller]),然后验证对象是否在每个子控制器上调用方法。添加一个根视图控制器OCMockObject [UIViewController]作为子视图控制器错误
的问题是我不断收到一个“测试失败‘并称一个根视图控制器OCMockObject [UIViewController中作为视图控制器的孩子’”
每个其他时间我运行测试。
- (void)setUp
{
[super setUp];
testMain = [[UIViewController alloc] init];
}
- (void)tearDown
{
for (UIViewController *testCon in testMain.childViewControllers) {
[testCon removeFromParentViewController];
}
testMain = nil;
[super tearDown];
}
测试:
- (void) testDayNightTriggerTriggersAllSubviews{
id mockTopController = [OCMockObject niceMockForClass:[UIViewController class]];
id mockBottomController = [OCMockObject niceMockForClass:[UIViewController class]];
id mockMainScreen = [OCMockObject niceMockForClass:[UIViewController class]];
[[mockTopController expect] dayNightTrigger];
[[mockBottomController expect] dayNightTrigger];
[[mockMainScreen expect] dayNightTrigger];
//trigger
[testMain dayNightTrigger:mockTopController bottom:mockBottomController main:mockMainScreen];
[mockBottomController verify];
[mockTopController verify];
[mockMainScreen verify];
}
方法来验证:
//overload
- (void) dayNightTrigger:(UIViewController *) top bottom:(UIViewController *)bottom main:(UIViewController *)main{
self.bottomMenu = bottom;
self.topMenu = top;
self.mainScreen = main;
[self dayNightTrigger];
}
- (void) dayNightTrigger{
[self.app dayNightTrigger];
[self.bottomMenu dayNightTrigger];
[self.topMenu dayNightTrigger];
[self.mainScreen dayNightTrigger];
}
我在想,如果有什么毛病我安装/拆卸?或者我在做错误的OCMock框架,但真的为什么我不断收到这个错误。
粘贴实际的回溯可能会有帮助。 –
你应该嘲笑self.app dayNightTrigger吗? –