DBにデータを更新するテストケースを1つ実行しようとしています。これが私のテスト方法のソースコードです。jmockit検証ブロック投げmethodNameへの1つの呼び出しがありません
私の意図は、期待どおりに記録された擬似メソッドに対する期待される呼び出しを確認することです。しかし、検証ブロックは次の例外メッセージを出しています。 回= 1を削除すると、テストケースが成功しています。それは私の望む結果ではありません。私のテストケースで何が間違っているのかも教えてください。
mockit.internal.MissingInvocation:引数を持つ SecondLevelClass#updatedbを(credsを、データ) :credsを、データに起因する
:行方不明の呼び出しを更新
に1つの呼び出しがありません質問:
updateDatabaseThroughSecondLevelClass(info)
には、私たちが形成している議論から1つの議論がありますSecondLevelClassでのcreds参照
Credentials creds = info.getCredentials();
しかし、検証に、我々はローカルでテストオブジェクトを作成している[ FirstLevelClassの一部である]をブロックします。
Credentials creds = getCredsTestObject();
これは、Missing invocations
について不平を言う理由です。両方が2つのクラスの2つの異なる参照であるためです。誰もこのケースをどう扱うか教えてください。
ありがとうございました。
'creds'と' data'から来るのかはどこ?私は 'updateDatabaseThroughSecondLevelClass'から' updateDB'に実際に渡されたのと同じ値ではないと思いますので、あなたは "行方不明"を得るでしょう。ところで、JMockitの最近のバージョンは 'NonStrictExpectations'クラスをもはや持っていません。また、テストの最後に検証される予定の場合は、この期待値を記録することに意味がありません(重複しています)。また、 '@ Tested'はインスタンスを単独で作成します。明示的に行う必要はありません。ドキュメントを読むには数分を要しますが、多くの例があります。 –
Rogerio、私の更新された質問をお読みください、このケースを処理する方法を示唆してください。 – Honey
質問にはまだ重要な情報が欠けています。テストに使用される前に 'info'、' creds'、 'data'がどのように作成されていますか? 'FirstLevelClass'のコードが表示されていれば助けになります。 –