3

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:)」を渡すと、テストを機能させることができます。これは、View Controller が使用する正確なセレクターです。しかし、可能であれば、テストが特定の実装についてそれほど多くの知識を持っていないことを望みます。

4

1 に答える 1