我一直在研究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嗎? –