0

私は 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 フレームワークで何か間違ったことをしていますが、実際になぜこのエラーが発生し続けるのか。

4

1 に答える 1