我正在编写一个简单的REST客户端,我的服务类使用一种方法
RestTemplate.getForObject()
我想练习测试,但是我真的不知道我们是否应该测试课程。我也不知道如何测试做得并不多的方法。我应该编写任何单元测试吗?
答案 0 :(得分:0)
您可以测试,该请求已发送。例如,您拥有下一个服务:
@Service
public void QueryService {
private final RestTemplate restTemplate;
@Autowired
public QueryService(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public List<Employee> void makeQuery() {
ResponseEntity<List<Employee>> response = restTemplate.getForObject(
"http://localhost:8080/employees",
EmployeeList.class);
return response.getEmployees();
}
}
对于方法makeQuery
,您可以编写下一个单元测试:
@RunWith(MockitoJUnitRunner.class)
public class QueryServiceTest {
@Mock
private RestTemplate restTemplate;
@InjectMocks
private QueryService queryService;
@Test
public void testMakeQueryRequestHasBeenSent() {
List<Employee> result = queryService.makeQuery();
// This string checks that method getForObject has been invoked
verify(restTemplate).getForObject(anyString(), any(Class.class));
}
}
将来,如果您更改makeQuery
方法并忘记使用restTemplate
发送请求,则此测试将失败。