-1

如何为以下类编写 Mockito JUnit 测试?这是我的代码:

/**
 * baseUrl
 */
@Value("${base.url}")
private String baseUrl;

/**
 * Client Method to get room by id
 * 
 * @param id
 * @return roomModel
 */
public RoomModel getRoomByIdClient(int id) {
    HttpHeaders headers = new HttpHeaders();
    HttpEntity<String> requestEntity = new HttpEntity<String>(headers);
    ResponseEntity<RoomModel> responseEntity = restTemplate.exchange(baseUrl+"/room/{id}",
            HttpMethod.GET, requestEntity, RoomModel.class, id);
    RoomModel roomModel = responseEntity.getBody();
    return roomModel;
}

请帮忙

4

1 回答 1

1

这是一个如何测试您提供的代码的简单示例。这是junit 5。如果您使用的是junit 4,则需要进行调整。

@Mock
RestTemplate restTemplate;

@InjectMocks
YourClass testedClass;

@BeforeEach
void setUp() {
    MockitoAnnotations.initMocks(this);
    ReflectionTestUtils.setField(testedClass, "baseUrl", "https://baseURL.com");
}

@Test
void testRestTemplate() {

    RoomModel roomModel = new RoomModel();
    Mockito
        .when(restTemplate.exchange(
            ArgumentMatchers.eq("https://baseURL.com/room/{id}"),
            ArgumentMatchers.eq(HttpMethod.GET),
            ArgumentMatchers.any(HttpEntity.class),
            ArgumentMatchers.eq(RoomModel.class),
            ArgumentMatchers.eq(1)
        ))
      .thenReturn(new ResponseEntity<RoomModel>(roomModel, HttpStatus.OK));

    RoomModel returnedModel = testedClass.getRoomByIdClient(1);

    Assertions.assertEquals(roomModel, returnedModel);

}
于 2020-08-03T11:56:17.973 回答