2017-07-25 11 views
1

とmockitoはあまり厳密くださいは、私は次のコードを持つオブジェクトの比較

public void getOrder() throws JSONException { 
    JSONObject json = new JSONObject("{result: 'OK', error: 0}"); 
    doReturn(json) 
      .when(this.clientSpy) // this.clientSpy = Mockito.spy(client); 
      .post("/orderItems/addProductToOrder", new JSONObject("{productId: 1, orderId: 1, price: 15.99, name: 'Product 1'}")); 

    OrderItem orderItem = new OrderItem(this.api); 
    assertEquals("OK", orderItem.addProductToOrder(1, 1, "Product 1", 15.99).get("result")); 
} 

私は物事を理解する方法を、 new JSONObject() !== new JSONObject()が原因で私のdoReturn()がトリガーされません。

オブジェクトを比較するのではなく、内容を比較する方法はありますか?

+0

私が正しく理解すれば、あなたが比較したい内容でequalsメソッドを実装するべきです。 –

答えて

1

ここでは、実際のメソッド呼び出しに使用されているオブジェクトと指定したオブジェクトを比較するために、Mockitoがequals()を呼び出しています。

基本的には、3つのオプションがあります:あなただけのオブジェクトを提供する場合

  • は、(等しい)は
  • を比較するために使用され、その後、あなたは、このようなany()isNull()として、他のArgumentMatchersの多様性を持っています。注:このようなマッチャーを使用する場合は、のすべての引数を一致させる必要があります。例えば、foo(any(), 5)のようにすることはできません。
  • の場合:ArgumentCaptorを使用することもできます。意味:Mockitoにオブジェクトを比較させる代わりに、レコードの模擬オブジェクトに渡します。そして、必要に応じてキャプチャされた引数をチェックする別のステップをテストケースに追加します。
関連する問題