私はしかし、すべての時間をと呼ばれる特定の方法、の応答を模擬する必要のあるSOAPのAPIのユニットテストを書いています。
私のユニットテストの(関連)のコードは以下の通りであります:
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
public class PricingSessionTest{
@Test
public void testPricingOfStrategyWithCorrectFormat() throws Exception {
//[...other code...]
PricingSessionImpl pricingSession = new PricingSessionImpl(this.session);
PricingSessionImpl spyPricingSession = Mockito.spy(pricingSession);
Mockito.doReturn(myResult)
.when(spyPricingSession)
.send(
Mockito.any(MxML.class),
Matchers.eq(ACTION_PRICE),
Matchers.eq(TimeoutDuration),
Matchers.eq(TimeoutUnit)
);
List<PricingResult<?>> pricedProducts = pricingSession.price(listOfProductsToPrice);
}
メソッドの内部.price()
スパイオブジェクトのpricingSession
(タイプPricingSessionImpl
)以下のメソッドの呼び出しがあります:
protected List<MxDocument> send(MxML mxml, String action, long timeout, TimeUnit timeoutUnit) throws RequestException, RequestTimeoutException
メソッドの実装は、親クラスで発見されたpublic abstract class AbstractPricingSession
(しかし、この方法自体はされていないabstract
)、あなたは下の階層を見つけることができます。
私はこのユニットテストをデバッグする場合、いくつかの点で私はモックとしたいメソッドの呼び出しの前に取得します:
List<MxDocument> documents = send(mxml, ACTION_PRICE, getTimeoutDuration(), getTimeoutUnit());
ここで、私は私が期待するMockito
私を返すようにmyResult
メソッドの呼び出し以降、send()
クラスでは、PricingSessionImpl
タイプのパラメータで行われMxML
、その後1とString
、1 long
と1 TimeUnit
私が渡しているまさにです.when()
。
しかし、メソッドが呼び出さ取得を続けています。
良い方向に向かって誰ポイント私はこの問題をデバッグすることはできますか?私はウェブに既に存在しているこのテーマに関する複数の質問/回答をチェックしましたが、これまでのところ、私の特定のケースのために役立つ何かを見つけることができませんでしたのでご注意ください。
ケースでは、より多くのコードでは、お気軽にお問い合わせを参照する必要があります。
スパイが実際に使用されるためには、への呼び出しprice(listOfProductsToPrice)
のニーズは、インスタンス上のスパイに移動しますspyPricingSession
List<PricingResult<?>> pricedProducts = spyPricingSession.price(listOfProductsToPrice);