Tôi có một dịch vụ mà tôi cần phải hỏi một máy chủ bên ngoài thông qua phần còn lại cho một số thông tin:Làm cách nào để giả lập một trao đổi mẫu REST?
public class SomeService {
public List<ObjectA> getListofObjectsA() {
List<ObjectA> objectAList = new ArrayList<ObjectA>();
ParameterizedTypeReference<List<ObjectA>> typeRef = new ParameterizedTypeReference<List<ObjectA>>() {};
ResponseEntity<List<ObjectA>> responseEntity = restTemplate.exchange("/objects/get-objectA", HttpMethod.POST, new HttpEntity<>(ObjectAList), typeRef);
return responseEntity.getBody();
}
}
Làm thế nào tôi có thể viết một bài kiểm tra JUnit cho getListofObjectsA()
?
Tôi đã thử với dưới đây:
@RunWith(MockitoJUnitRunner.class)
public class SomeServiceTest {
private MockRestServiceServer mockServer;
@Mock
private RestTemplate restTemplate;
@Inject
private SomeService underTest;
@Before
public void setup() {
mockServer = MockRestServiceServer.createServer(restTemplate);
underTest = new SomeService(restTemplate);
mockServer.expect(requestTo("/objects/get-objectA")).andExpect(method(HttpMethod.POST))
.andRespond(withSuccess("{json list response}", MediaType.APPLICATION_JSON));
}
@Test
public void testGetObjectAList() {
List<ObjectA> res = underTest.getListofObjectsA();
Assert.assertEquals(myobjectA, res.get(0));
}
Tuy nhiên các mã trên không hoạt động, nó cho thấy rằng responseEntitty
là null
. Làm thế nào tôi có thể sửa thử nghiệm của tôi để thử nghiệm đúng cách restTemplate.exchange
?
có ai có ý tưởng không? –