私は iOS プログラミングの単体テストに取り組んできましたが、OCMock を使用して子クラスをモックし、メイン クラスが子コントローラー (mockObjects[ uiviewContoller]) を実行し、オブジェクトが各子コントローラーでメソッドを呼び出すことを確認します。
問題は、「ルート ビュー コントローラー 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 フレームワークで何か間違ったことをしていますが、実際になぜこのエラーが発生し続けるのか。