4

OCMockito を使用してプリミティブ値で引数をキャプチャするにはどうすればよいですか?

MKTArgumentCaptor はオブジェクト タイプのみをキャプチャできるようですか? Xcodeは、「整数変換への互換性のないポインター」と言っています。

4

1 に答える 1

6

原始的な議論の場合は、少し踊る必要があります。NSMutableArray をモックして、への呼び出しを検証したいとしましょう。

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

それ以外の

[verify(mockArray) replaceObjectAtIndex:[argument capture] withObject:anything()];

これにより、型の競合が発生します。ダミーの値 (0 で問題ありません) があるだけですが、特定の引数インデックスでマッチャーをオーバーライドする OCMockito 呼び出しを追加します。

[[verify(mockArray) withMatcher:[argument capture] forArgument:0]
    replaceObjectAtIndex:0 withObject:anything()];

の引数インデックス-withMatcher:forArgument:は最初の引数の 0 ベースであるため、これは、「最初の引数については、渡されたものを無視し、代わりにこのマッチャーを使用する」ことを示しています。

最初の引数でこれを行うメソッドもある-withMatcher:ため、この例は次のように簡略化できます。

[[verify(mockArray) withMatcher:[argument capture]]
    replaceObjectAtIndex:0 withObject:anything()];
于 2013-12-11T16:23:32.043 に答える