使用OCMockito如何验证任何选择器是否传递给方法

时间:2014-03-21 20:54:23

标签: ios objective-c selector ocmockito

我有一个视图控制器,它在viewDidLoad期间将自己添加为UIApplicationDidBecomeActiveNotification的观察者。我想验证这是否发生但我不希望测试关注视图控制器为事件注册的特定选择器。

目前我的测试看起来像这样:

- (void)testRegistersForApplicationDidBecomeActiveEvent
{
   //given
   MyViewController *sut = [MyViewController new];
   NSNotificationCenter* mockNotificationCenter = mock([NSNotificationCenter class);

   //when
   [sut view];

   //then
   [verify([mockNotificationCenter]) addObserver:sut
                                        selector:anything()
                                            name:UIApplicationDidBecomeActiveNotification
                                          object:nil];
}

...但是传递"任何东西()"对于选择器给出编译器错误:"将Objective-C指针隐式转换为' SEL'不允许使用ARC"。

如果我通过" @selector(applicationDidBecomeActive :)和#34;我可以让测试工作。而不是任何东西。这是视图控制器使用的确切选择器。但是如果可能的话,我更倾向于对测试没有那么多的具体实现知识。

1 个答案:

答案 0 :(得分:1)

anything()仅适用于表示对象的idfrom the OCHamcrest API)和方法的selector状态。

我会在GitHub上提出问题,现在提供额外的测试知识,并指定exact。

我认为这应该是非常容易的贡献(因为提供精确的选择器正在进行测试)