我有一个视图控制器,它在 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];
}
...但是为选择器传递“anything()”会导致编译器错误:“ARC 不允许将 Objective-C 指针隐式转换为 'SEL'”。
如果我通过“@selector(applicationDidBecomeActive:)”而不是任何东西,我可以使测试工作。那是视图控制器使用的确切选择器。但如果可能的话,我希望测试对具体实现没有太多了解。