Прежде всего, MockRestServiceServer
не является реальным сервером - например, он не прослушивает порт TCP. Единственное, что делает MockRestServiceServer
, это изменить ваш RestTemplate
(см. Подробности ниже).
Итак, чтобы ответить на ваш вопрос: нет сервера destroy.
Однако ... если ваш RestTemplate
создаются в ApplicationContext
и вводит в нескольких компонентов (например, в вашем слое службы), вы можете сбросить начальное состояние RestTemplate
. Если это так, то читайте дальше ...
Там в настоящее время нет «официального» способа сброс в RestTemplate
MockRestServiceServer.createServer()
передаются, но это не значит, что вы не можете реализовать такую функцию по своему усмотрению.
Ключ к пониманию этого является знание того, что метод MockRestServiceServer.createServer()
заменяет ClientHttpRequestFactory
в поставленном RestTemplate
с издевались версии (то есть, частное, внутреннее MockRestServiceServer.RequestMatcherClientHttpRequestFactory
).
Таким образом, вы должны уметь восстановить исходное состояние RestTemplate
, отслеживая исходный завод запроса и установив его в шаблоне после вашего теста. Что-то вроде следующего должно работать:
RestTemplate restTemplate = // likely injected into the test
ClientHttpRequestFactory originalRequestFactory = restTemplate.getRequestFactory();
MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
try {
// use mockServer as usual...
mockServer.verify();
} finally {
restTemplate.setRequestFactory(originalRequestFactory);
}
Сообщите мне, если это решает вашу проблему!
Приветствия,
Сэм (автор весеннего TestContext Framework)
Спасибо много. Это работает как шарм. Спасибо за подробное объяснение. –
@TusharPatel вы должны отметить как принятый этот ответ :) –