3

単純なif条件が満たされると、「完了」がタップされたときにキーボードをドロップするターゲットが追加されます。

- (void)addDoneWhenTrue:(UITextField *)input
{
    if (YES)
    {
        [input addTarget:self action:@selector(textFieldFinished:) forControlEvents:UIControlEventEditingDidEndOnExit];
    }
}

- (IBAction)textFieldFinished:(id)sender
{
    [sender resignFirstResponder];
}

iOS5でOCMockとOCUnitを使用しています。UITextField単純な入力に合格し、その上で完了ボタンをタップすることをシミュレートして、それresignFirstResponderが発生する(または発生しない)ことを確認できる単体テストを作成するにはどうすればよいですか?

4

2 に答える 2

0

確かに、ボタンのクリックをシミュレートする必要はありません。それが処理されてUIKitいるからです。textFieldFinished:メソッドが呼び出されたときに正しいことが起こることを懸念している

免責事項

私はOCMock長い間使用していないので、これはドキュメントを使用するだけの例であるため、わずかに間違っている可能性がOCMockあります.

id mock = [OCMockObject mockForClass:[UITextField class]];

[[mock expect] resignFirstResponder];

[sut textFieldFinished:mock]; // sut = system under test - taken from your screen cast ;)

[mock verify];
于 2012-08-20T09:05:42.410 に答える