Я написал модульные тестовые примеры для контроллера пружинного упора для нижеприведенного метода
@PutMapping("/offers/{jobTitle}")
public Offer updateOffer(@PathVariable String jobTitle,@Valid @RequestBody Offer offer) {
return offerService.updateNoOfPost(jobTitle, offer);
}
Ниже мой класс обслуживания
@Override
public Offer updateNoOfPost(String jobTitle, Offer offer) {
if (!offerRepository.existsById(jobTitle))
throw new ResourceNotFoundException("JobTitle "+jobTitle+" not found !!");
offer.setNoOfPost(offer.getNoOfPost());
return offerRepository.save(offer);
}
Я написал тестовый пример для этого метода, используя testNg и mockito.
public class OfferControllerTest {
private MockMvc mvc;
private JacksonTester<Offer> jsonOffer;
@Mock
private OfferService service;
@InjectMocks
OfferController offerController;
private Offer offer;
@BeforeMethod
public void setup() {
offer = new Offer("LSE", new Date(),1);
MockitoAnnotations.initMocks(this);
mvc = MockMvcBuilders.standaloneSetup(offerController)
.build();
JacksonTester.initFields(this, new ObjectMapper());
}
@Test
public void updateOffer() throws Exception {
Mockito.when(service.updateNoOfPost("LSE", offer)).thenReturn(offer);
MockHttpServletResponse response = mvc.perform(
put("/offers/LSE").contentType(MediaType.APPLICATION_JSON).content(
jsonOffer.write(new Offer("SE", new Date(), 19)).getJson()
)).andReturn().getResponse();
assertThat(response.getContentAsString()).isEqualTo(new ObjectMapper().writeValueAsString(offer));
}
Я получаю код ответа 200. но получаю пустой body.pls, найдите ошибку ниже
FAILED: updateOffer
org.junit.ComparisonFailure: expected:<"[{"jobTitle":"LSE","createdAt":"2018-10-27","noOfPost":1}]"> but was:<"[]">
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
что мне не хватает? это стандартный способ написания модульных тестов для контроллера пружинного упора?
Ниже насмешка должна исправить проблему
Mockito.when(service.updateNoOfPost(Mockito.any(String.class), Mockito.any())).thenReturn(offer);
Подробнее здесь: стек-46914252
@Ankit, если приведенный выше ответ вам помог, примите его.
это сработало @Barath. Я также сослался на ссылку. проблема заключалась в разборе предложения json, которое мы передавали в теле запроса, но мы жестко кодировали значение, так что это не могло быть проблемой.