在我的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吗?
答案 0 :(得分:1)
看起来你没有让你的mockAppDelegate
对被测试的班级可见。尝试添加:
[self.sut setAppDelegate:mockAppDelegate];