我有以下代码:
public JSONObject addProductToOrder(int orderId, int productId, String name, double price) {
JSONObject json = new JSONObject();
try {
json.put("orderId", orderId);
json.put("productId", productId);
json.put("name", name);
json.put("price", price);
} catch (JSONException e) {
Debugger.out(e);
}
return this.dataSource.write("/orderItems/addproductToOrder", json);
}
我想使用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"));
}
我理解事物的方式,我的doReturn()
未被触发,因为new JSONObject() !== new JSONObject()
。
有没有办法让它不比较对象,而只是比较内容?
答案 0 :(得分:2)
这里发生的是Mockito正在调用 equals()来将您提供给规范的对象与用于实际方法调用的对象进行比较。
基本上,有三种选择:
any()
或isNull()
。请注意:使用此类匹配器时,所有参数必须匹配,您不能这样做:foo(any(), 5)
例如。