我正在尝试使用pact jvm测试消费者驱动程序合同测试并能够生成消费者方合同文件。在提供者端验证期间,如何提供公共API而不是localhost大多数示例仅使用localhost作为提供者,任何帮助请
@RunWith(PactRunner.class) // Say JUnit to run tests with custom Runner
@Provider("WeatherProvider") // Set up name of tested provider
@PactFolder("D:\Workspace\pactConsumer\pactConsumer_v2\pacts") // Point where to find pacts (See also section Pacts source in documentation)
@VerificationReports(value = {"markdown","json"}, reportDir = "D:\Workspace\pactConsumer\pactConsumer_v2\target")
public class ProviderVerifyer {
@State("Weather information is available for Chennai") // Method will be run before testing interactions that require "with-data" state
public void getWeather() {
System.out.println("Weather information is available for Chennai" );
}
@TestTarget // Annotation denotes Target that will be used for tests
public final Target target = new HttpTarget(8114); // Out-of-the-box implementation of Target (for more information take a look at Test Target section)
}
答案 0 :(得分:0)
在验证实时提供商之前,您需要仔细考虑 - 尤其是您无法控制的提供商。任何改变服务器状态的东西(很可能)都会消失。
但是,没有技术原因您无法运行某些提供商验证来检查您的消费者合同是否已由当前部署的提供商履行。有host and port的构造函数:
public final Target target = new HttpTarget(host, port);
有些事要小心:
最好的解决方案是让控制提供商的任何人使用(或包括)您的消费者生成的协议进行自己的验证。对于协议经纪人来说,这是一个很好的用例 - 但是根据你与合适的人联系的能力,这可能是一个挑战。