如何使用ocmock在AppDelegate上存根属性?

时间:2012-06-20 11:40:00

标签: objective-c ocmock

在我的app委托类中,我有一个简单的属性

@property (strong, nonatomic) LoginAppDelegate *loginAppDelegate;

然后我卸载应用程序委托,就像所有登录视图的功能一样,这样我就可以让我的主应用委托类很小(ish)

然后在登录应用程序委托上,我有一个方法来推送主导航控制器上的视图控制器

- (void)launchSomeOtherViewController {} 

痛苦的部分是我在一个调用这个“启动”方法的视图控制器里面

- (void)callBackAfterSomeHttpMethodLetsSay
{
    [self.appDelegate.loginAppDelegate launchSomeOtherViewController];
}

当我试图嘲笑它时,我的应用代表上的存根显示不正确

- (void)testCallBackWithSignupTokenInvokesLaunchCompleteSignupViewControllerWithToken
{
    id mockLoginAppDelegate = [OCMockObject mockForClass:[LoginAppDelegate class]];
    id mockAppDelegate = [OCMockObject mockForClass:[AppDelegate class]];
    [[[mockAppDelegate stub] andReturn:mockLoginAppDelegate] loginAppDelegate];
    [[mockLoginAppDelegate expect] launchSomeOtherViewController];
    [self.sut callBackAfterSomeHttpMethodLetsSay];
    [mockLoginAppDelegate verify];
}

通过ocunit运行此错误时,通常会出现“未调用预期方法”

所以我的问题与我存根的方式有关 - 我可以做一个存根,它会像我一样返回登录模拟或我需要手动进入getter吗?

1 个答案:

答案 0 :(得分:1)

看起来你没有让你的mockAppDelegate对被测试的班级可见。尝试添加:

[self.sut setAppDelegate:mockAppDelegate];
相关问题