Objective c 如何使用ocmock在AppDelegate上删除属性?

Objective c 如何使用ocmock在AppDelegate上删除属性?,objective-c,ocmock,Objective C,Ocmock,在我的app delegate类中,我有一个简单的属性 @property (strong, nonatomic) LoginAppDelegate *loginAppDelegate; 然后我卸载了所有登录视图的app-delegate类功能,这样我就可以保持我的主app-delegate类较小(ish) 然后在登录应用程序委托上,我有一个方法将视图控制器推送到主导航控制器上 - (void)launchSomeOtherViewController {} 最痛苦的是当我在调用这个“启动

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

@property (strong, nonatomic) LoginAppDelegate *loginAppDelegate;
然后我卸载了所有登录视图的app-delegate类功能,这样我就可以保持我的主app-delegate类较小(ish)

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

- (void)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?

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

[self.sut setAppDelegate:mockAppDelegate];

看起来您没有使您的
mockAppDelegate
对被测试的类可见。尝试添加:

[self.sut setAppDelegate:mockAppDelegate];