我有一个用@PatchMapping
注释的方法。
@PatchMapping(path= "/api/transaction/{transaction-id}/return")
public ResponseEntity<Transaction> returnBookTransaction(@PathVariable(name="transaction-id") Long transactionId){
Transaction transaction = transactionRepository.findById(transactionId).get();
transaction.setDateOfReturn(LocalDateTime.now());
return ResponseEntity.ok().body(transaction);
}
我需要测试此方法。在测试方法中,我需要使用TestRestController.patchForObject();
@Test
public void testReturnBookTransaction() throws Exception {
ResponseEntity<Transaction> response = testRestTemplate.patchForObject("/api/transaction/{transaction-id}/return",
, Transaction.class, 1);
Assert.assertEquals(200, response.getStatusCode().value());
}
上面的代码显示template.patchForObject()
中的编译器错误,因为它需要4个参数。我不知道第4个参数要传递什么。
我只需要为{transaction-id},URL String和返回类型类传递1,我已经通过了。但是此方法还需要另外一个参数Object
。
我不知道要在Object
中传递什么。
答案 0 :(得分:0)
public T patchForObject(字符串url, 对象请求 类responseType, 地图uriVariables ) 抛出RestClientException
第二个参数用于请求对象。由于您的控制器方法中没有任何与请求相关的信息,因此可以将其设置为null。
尝试以下操作:
exec gosu ${app_user} "$@"
更新:
如果您想访问响应实体,请尝试以下操作:
Transaction response = testRestTemplate.patchForObject("/api/transaction/{transaction-id}/return", null
, Transaction.class, 1);