在Mule中进行集成测试的模拟服务

时间:2015-03-02 14:31:50

标签: web-services mocking mule

在我们的mule项目中 - 我们目前有我们的集成测试用例调用实际的外部Web服务(内部)。我们显然希望摆脱外部服务的模拟服务,因为我们几乎完成了为mule项目设置构建服务器。

我看到有许多选项可用于骡子流中的模拟:

  1. MuleSoft的Munit - 仍处于测试阶段;但据说是最合适的人选。但是,由于它处于Beta版本,我们可以继续将其用于我们即将投入生产的代码
  2. Confluex / Wiremock以及许多其他用于模拟webservices的框架
  3. 拥有带嵌入式jetty服务器的测试用例来处理请求并模拟响应。
  4. 请告诉我你的意见。 感谢致敬, 普里亚

3 个答案:

答案 0 :(得分:2)

如果你问我我会和Munit一起去,我明白BETA可能会有点吓人但是:

  • 您的测试不需要与生产代码一样多的稳定性
  • Munit的BETA版本是稳定的,即它不是快照,因此不会突然改变并制止你的测试
  • Munit将在接下来的几个月成为GA

这与代码稳定性有关。 也就是说,除了嘲笑你的流量之外,Munit还提供了许多其他功能,而且在某些时候我认为你不仅可以对你的骡子应用程序进行单元测试,还可以对你也可以用Munit进行集成测试。

一般来说,您的其他选项虽然适用,仍然依赖于某些外部系统,而Munit是一种本地方式来隔离您的Mule代码并避免它进行外部调用。

HTH

答案 1 :(得分:0)

我觉得使用munit xml配置方法来测试mule流更好。

您可以通过为Web服务的模拟组件指定所需的响应来模拟服务,这是一种简单且可取的方法。对于模拟组件,您可以设置像'http.status'等的入站属性。在下一个流消息处理器中将需要的相应属性。

答案 2 :(得分:0)

我是confluex-mock-http的作者之一,目前正在将项目迁移到https://github.com/shamsoftware/sham-http。所以,我可能有偏见:)

我更喜欢在进程中启动HTTP服务器,这就是为什么我帮助构建了一个这样做的项目。该库是专门制作的,因为我们使用选项3多次解决了这个问题。:)

我即将花费一些努力来发布sham-http,我打算让它与Mule 3.6.0兼容。如果您使用的是其他版本,请务必添加一个问题,使其与您正在使用的任何版本兼容:)