我的项目包括各种使用第三方API的spring boot @Service
。
我们为每种此类服务编写了一个模拟类,并以这样的方式运行系统测试:Spring Boot选择模拟类而不是真实类(使用@Profile("test")
)。
这样做的动机是:
我的问题:
答案 0 :(得分:1)
通过模拟外部服务对服务的调用,这是对单元服务进行单元测试的好方法。您可能需要将测试分为unit
测试和integration
测试。通常,单元测试通过将存根类与@Profile
一起使用来模拟任何外部服务调用(如您所完成的那样),或者通过使用诸如mockito之类的模拟库来模拟服务的返回值。
在一个集成测试中,这将是一个更好的系统测试,您将使用通过Controller
或模拟库(即WireMock)提供服务的存根文件,该库“嘲笑”外部服务的响应。如果您的外部API返回JSON,则可以有一个Controller
或模拟库来提供实际的JSON响应。通过这样做,您正在测试您的服务是否实际进行了API调用,并且对存根结果进行了处理。您不必让服务调用实际的API URL,而是让它调用您的控制器或WireMock URL。