如何通过模拟依赖关系来测试微服务?

时间:2016-02-02 06:43:17

标签: unit-testing grails testing automated-tests

我有一个用Grails编写的RESTFul微服务。这个微服务有它自己的DB。它还取决于另外两个微服务。

该服务的典型工作流程为:

  1. 从客户端收到GET请求,例如浏览器
  2. 调用另一个微服务抛出http来获取一些信息
  3. 查询自己的数据库以获取一些数据
  4. 向客户发送回复
  5. 我想为此服务编写自动化测试。每当我进行测试时,它都会执行以下操作:

    • 模拟外部微服务
    • 创建数据库并使用测试数据填充
    • 运行应用程序并将其配置为使用模拟服务和DB
    • 通过发送http请求和匹配响应来运行测试用例

    以下是我的问题:

    • 这是什么类型的测试?
    • 编写此类测试有哪些好的框架或工具?

    我对测试知之甚少,所以我可能会问愚蠢的问题。

1 个答案:

答案 0 :(得分:0)

我的第一个建议是您的服务不了解HTTP请求。它应该是像https://jersey.java.net这样的更高级别层的提供者,它可以发出请求并将POJO映射到JSON或者在HTTP响应中返回的任何内容。

#4的方法,"向客户发送回复"应该使用这些外部依赖关系来收集信息然后做出决定。

有些案例要涵盖: 如果其他微服务可以返回A,B或C并且DB可以返回D,E或F,那么您有9个方案需要测试。使用模拟提供所有这些变量的数据,然后对结果进行断言。如果还有更多的可能性,那么请考虑添加额外的信息收集方法 - 并自行测试。