1

モックされたオブジェクトのパラメーターが正しくマップされているかどうかを確認したいと思います (メソッド呼び出しの前にマッピングがあります)。2 つのオブジェクトを作成しましたが、そのうちの 1 つは期待値を持っています。false が失敗することを期待していますが、パラメーターに期待値が含まれているかどうかを easymock が検証していません。どうすれば修正できますか?

実際のクラスは次のことを行います。

public SomeObject methodname() {
    MyClass  parameter = mapper.map(source,Dest.class);
    serviceBeingMocked.doSomething(parameter); //<-- want to verify this parameter
}

テスト

 MyClass correct = ...;
 correct.setA=a;
 correct.setB=b;

 expect(serviceBeingMocked(correct)).andReturn(iDontCare); //this should work



 MyClass false = ...;
 false.setA=eeeeeeeeeee;
 false.setB=ffffffffff;

 expect(serviceBeingMocked(false)).andReturn(iDontCare); // this test should fail

前もって感謝します!

編集:答えを見つけました(キャプチャを使用してパラメーターを記録し、アサートを介して値をテストします)

キャプチャ パラメータ = new Capitre(); 期待する(serviceBeingMocked(EasyMock.capture(パラメータ)));

assertEquals(parameter.getValue().getWhatever().equals(correct.getWhatever());

4

1 に答える 1

1

私が正しく理解していれば、このテストはテストの敵methodname()です。そして、ソースが与えられた場合、正しいMyClassパラメータがマッパーによって作成され、に渡されることをテストしたいと思いますserviceBeingMocked.doSomething()

したがって、実際には、ユニットテストはmethodname()実際にmapper.map()メソッドをテストします。それは間違っている。それをテストするには、の単体テストを作成する必要がありますmapper.map()mapper.map()期待どおりに機能することを確認したらmethodname()、メソッドをモックしてテストしmapper.map()、このモックされたメソッドの結果がモックされたサービスに渡されることを確認できます(ただし、このテストはあまり価値がありません)。

完了するために、本当に自分の道を進んで、に渡された値を確認したい場合は、キャプチャserviceBeingMocked()を使用する必要があります。

于 2013-01-25T10:11:44.977 に答える