で検証:Mockito:私は次の操作を行うことができますMockitoで汎用パラメータ
verify(someService).process(any(Person.class));
しかし、どのようにprocess
ではなくCollection<Person>
を取る場合、私はこれを書いていますか?それを正しく書く方法を理解できません。構文エラーを取得するだけ...
で検証:Mockito:私は次の操作を行うことができますMockitoで汎用パラメータ
verify(someService).process(any(Person.class));
しかし、どのようにprocess
ではなくCollection<Person>
を取る場合、私はこれを書いていますか?それを正しく書く方法を理解できません。構文エラーを取得するだけ...
試してみてください。私は残念ながら、あなたがこのような場合には、静的インポートを使用することはできません... any()
入力されたときに実際に、IntelliJのは、自動的にこの修正プログラムを提案し
verify(someService).process(Matchers.<Collection<Person>>any());
。
タイプ消去のためにこれを表現することはできません。あなたがコードで表現することができたとしても、Mockitoは実行時にそれを確認する機会がありませんでした。
interface PersonCollection extends Collection<Person> { /* nothing */ }
のようなインターフェイスを代わりに作成して、コード全体でこれを使用することができます。
編集:私は間違っていた、Mockitoはあなたが欲しいものであるanyCollectionOf(..)を持っています。
実際には、APIがそれを受け入れるならば、 "型リテラル"オブジェクトで表現することができます: 'any(新しいTypeLiteral
@Rogerio:あなたは正しいです、そして、これは確かにこれをサポートしているようです。しばらくそれを使用していない... – Waldheinz
試してみてください。
verify(someService).process(anyCollectionOf(Person.class));
バージョン1.8 Mockitoは
public static <T> Collection<T> anyCollectionOf(Class<T> clazz);
anyCollectionOf()に加えてanyListOf()もあります。http://stackoverflow.com/a/10512526/908677 –
anyCollectionOf(クラス
を紹介しているので、あなたが自分のメソッドを使用している場合、あなたも、静的インポートを使用することができます。
private Collection<Person> anyPersonCollection() {
return any();
}
次にあなたが使用することができますが
verify(someService).process(anyPersonCollection());
それは動作するようだ! – Svish
ありがとうございます...しかし、神様は恐ろしいようですが、正しい方法が必要です。 –
マッチする容器の特殊なケースをターゲットにするのとは対照的に、質問に答えている唯一の解決策を紹介します。 –