2012-04-08 22 views
164

Mockitoでは、verify()の引数リストにbyte[]というメソッド呼び出しがありますが、これを書く方法が見つかりませんでした。Mockito matcherとプリミティブの配列

myMethod(byte[]) 

私はMockitoでそれをする方法をanyByteArray()、のような何かをしたいですか?

+0

バイト配列の内容が本当に気にしませんか? これは便利なのでanyX()マッチャーを使用する単体テストでは多くのことがわかりますが、実際には何が渡されているか気にする必要があります。実際に値を消費するAnswerを使用していない場合、実際の期待される議論と一致するはずです。 – Matunos

+0

@マトゥノス:議論の余地がある。任意のマッチャーを使用すると、テストがより簡単になり、テストを見ている次の人は、不必要に正確なマッチングによって注意をそらさず、テストの実際の目的に集中することができます。 –

+0

@tbruelle:Javaの各配列はオブジェクトであることに注意してください。それは初めにあなたを助けるでしょう。 –

答えて

321

私は

byte[] sampleTextFileAsBytes = new byte[]{anyByte()}; 
+0

Oups私はそれを逃した、ありがとう! – tbruyelle

+30

特定のバイト[]を確認する場合は、 'AdditionalMatchers.aryEq(expectedArray)' –

+4

またはMatchersを使用できます。 any()。 – jbyler

1

かをしようとするだろう:私はむしろMatchers.<byte[]>any()を使用することになり

AdditionalMatchers.aryEq(array); 
20

はこれを試してみてください。.. any(byte[].class)

8

。これは私のために働いた。

6

私はMutanosとAlecioに同意します。 さらに、できるだけ多くの同一メソッド呼び出しをチェックすることができます(実動コード内の後続の呼び出しを検証し、検証の順序は関係ありません)。

import static org.mockito.AdditionalMatchers.*; 

    verify(mockObject).myMethod(aryEq(new byte[] { 0 })); 
    verify(mockObject).myMethod(aryEq(new byte[] { 1, 2 })); 
0

引数が配列でもあるときは、Mockito.any()を使用することができます。 は、ここでは、コードです。 私はこのようにそれを使用する:私はこのためにMatchers.refEqを使用

verify(myMock, times(0)).setContents(any(), any()); 
関連する問題