我有一个包含3层的应用程序:控制器,服务和存储库。
我的控制器是Rest(在春季为@RestController),它仅使用DTO获取请求,转换为Model并传递给服务(在Spring为@Service)。
我的服务具有所有业务逻辑,而我的测试类仅基于服务类。
我的存储库只是一个JpaRepository,有时会通过@Query使用自定义查询。
正如我所说,我只是为Service创建测试类,因为这是我的业务逻辑。我的问题是关于如何为控制器类创建测试,这真的必要吗?这是一个好习惯吗?
答案 0 :(得分:2)
当然这是必须的。我们必须测试应用程序的所有层,因为它们中的每个层都提供了特定的元素:服务业务逻辑,存储库数据访问,控制器HTTP输入和输出。
对于每个端点,您可以测试它是否返回适当的状态代码,标头,正文等。此外,您还应该测试错误响应。考虑每个端点的所有可能性,分别是200、201、4xx,5xx。