我有一个视图控制器,它在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;我可以让测试工作。而不是任何东西。这是视图控制器使用的确切选择器。但是如果可能的话,我更倾向于对测试没有那么多的具体实现知识。
答案 0 :(得分:1)
anything()
仅适用于表示对象的id
(from the OCHamcrest
API)和方法的selector
状态。
我会在GitHub上提出问题,现在提供额外的测试知识,并指定exact。
我认为这应该是非常容易的贡献(因为提供精确的选择器正在进行测试)