java - 我们应该测试 getForObject 吗?

标签 java spring-boot junit mockito

我正在编写一个简单的 REST 客户端,我的服务类有一个使用的方法

RestTemplate.getForObject()

我想练习测试,但我真的不知道我们是否应该测试类(class)。我也不知道如何测试没有多大作用的方法。我应该编写任何单元测试吗?

最佳答案

您可以测试,该请求已发送。例如,您有下一个服务:

@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 发送请求,则此测试将失败。

关于java - 我们应该测试 getForObject 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56151927/

相关文章:

java - 如何在eclipse中获取Activity中的行号

java - Guice注入(inject)和RequestFactory : Extending ServiceLayerDecorator

Java 和 Json : Wrapping elements when serialising

java - ArrayList 中的重复对象是对单个对象的引用?

spring - 无法启动Spring Boot应用程序

java - 线程 "main"java.lang.AbstractMethodError SpringBoot 中的异常

java - Spring Boot应用程序中的 session 管理

java - java后期开发的自动化测试工具

java - 通过在命令行上指定多个 Maven 配置文件来堆叠属性

java - 使用 RestTemplate 进行 RESTful 服务测试