2010-11-24 12 views
6

Mockitoで動作の動作を検証しようとしています。テストコードは次のようになりますMockitoが間違った引数について文句を言います

final Type1 mock = mock(Type1.class); 
new SomeAction<Type1>(mock).actionPerformed(null); 

verify(mock).someMethod(); 

メソッドactionPerformedには、Type1のコンストラクタで提供されるオブジェクトのsomeMethodの呼び出しが含まれています。しかし、Mockitoは、期待されるメソッド呼び出しが起こらなかったと訴えています。代わりに、別のメソッド呼び出しが発生しました。しかし、Mockitoによって印刷された2つの呼び出しの文字列表現はまったく同じです!

何が起こっているのですか?

更新:ErrorMessageはMockito

Argument(s) are different! Wanted: 
type1.someMethod(); 
-> at xxx 
Actual invocation has different arguments: 
type1.someMethod(); 
-> at xxx 
+0

私はこれを試しましたが、動作するはずです(ベリファイはパスします)。どのバージョンのMockitoを使用していますか?私は1.8歳です。 nullパラメータで別のブランチが作成されていないことは確かですか? – omerkudat

+0

バージョンは1.8.5です。 someMethodはonelinerなので、実際には別の部分はありません。 –

+0

SSCCEを提供してもらえますか? – daveb

答えて

3

からは、これは、ストレッチのビットですが、あなたのtoStringの実装を確認してください。私は実際には異なっていたときに、期待され、観察されたものが単体テストの観点から同じであるように見える刺激的なユニットテストシナリオに遭遇しました。結局それはtoStringのバリエーションであり、実際には存在しないときに類似性があると私に信じさせました。

+0

メソッドはvoidを返し、引数を取らないのでtoStringには関係しません...私は思っています。 –

+0

ユニットテスト結果にtoString()表現が表示されていました。 2つのオブジェクトMockitoが不平を言っているかどうかを調べるために、ObjectにあるようにtoStringを再びオーバーライドします。 –

関連する問題