2017-08-16 44 views
1

我正在进行集成测试,从API获取响应答:API A与另一个API B交互,该B也调用Web Service从中获取数据。模拟一个Web服务仅用于测试目的

问题是数据可能会在将来发生变化,因此集成测试可能会失败,只要数据发生变化,我也必须编辑测试以使其工作。

我想模拟从中获取数据的Web服务,但我不知道如何告诉API B仅针对测试调用模拟, 有没有人有关于执行此操作的最佳方法的想法?

+0

如果API A和B与集成测试运行在相同的JVM实例中,那么您应该能够模拟Web服务客户端(由Java类表示),以便返回一些固定的测试数据。 –

+0

从我有数据的Web服务是一个SOAP Web服务,所以在我的API B中,我调用客户端,但只测试,我想模拟从客户端返回的数据,并且在正常情况下,API B与另一个客户,我该怎么做? – manu

回答

0

您可以使用像http://rest-assured.io/http://wiremock.org/这样的工具。 有了这个,你可以像通常一样完成API调用(可能需要更改主机名)。然后,您可以在URI,内容类型等上给出某个结果。

甚至可以执行断言,查看实际请求是否发生,并且可以对请求的内容进行一些检查。

+0

感谢您的回答,在我的API B中,我有一个对所调用的Web服务的ip地址(在应用程序上下文中为Spring)的引用,所以如果我使用wireMock作为示例,我如何才能将其更改为仅用于测试? – manu

+0

@manu使IP地址可配置。如果你已经使用spring,你可以看看https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html –

+0

,所以你在说,当我正在测试我可以更改属性文件?编辑使用的IP地址? – manu