Вызов аннотированного метода @PatchMapping с использованием TestRestController - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть метод, помеченный @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-м параметре.

Мне просто нужно передать 1 для {идентификатор-транзакции}, строки URL-адреса и класса возвращаемого типа, который я уже передал.Но этот метод требует еще один параметр, как Object.

Я не знаю, что передать в Object.

1 Ответ

0 голосов
/ 23 декабря 2018

Из Документация Spring :

public T patchForObject ( URL-адрес строки, запрос объекта, класс responseType, карта uriVariables ) создает исключение RestClientException

Второй аргумент для объекта запроса.Поскольку в вашем методе контроллера нет информации, относящейся к запросу, вы можете установить ее в null.

Попробуйте выполнить следующее:

Transaction response = testRestTemplate.patchForObject("/api/transaction/{transaction-id}/return", null 
        , Transaction.class, 1);

ОБНОВЛЕНИЕ:

Если вы хотите получить доступ к объекту ответа, попробуйте следующее:

ResponseEntity<Transaction> response = testRestTemplate.exchange("/api/transaction/{transaction-id}/return", HttpMethod.PATCH, null,Transaction.class, 1);
...