Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java使用者和JavaScript提供者的契约测试_Javascript_Java_Pact - Fatal编程技术网

Java使用者和JavaScript提供者的契约测试

Java使用者和JavaScript提供者的契约测试,javascript,java,pact,Javascript,Java,Pact,我们有两项服务,其中一项是另一项的消费者。使用者是用Java编写的,提供者是用JavaScript编写的 在消费者方面,我们已经使用pact jvm定义了消费者契约测试,并且我们能够生成契约。在本合同中,响应的定义如下: "response": { "status": 200, "headers": { "Content-Type": "application/json" },

我们有两项服务,其中一项是另一项的消费者。使用者是用Java编写的,提供者是用JavaScript编写的

在消费者方面,我们已经使用pact jvm定义了消费者契约测试,并且我们能够生成契约。在本合同中,响应的定义如下:

"response": {
  "status": 200,
  "headers": {
    "Content-Type": "application/json"
  },
  "body": [
    "test"
  ]
},
在我们的提供商上,我们现在尝试使用pact js定义提供商合同测试,但我们遇到了一个问题,在pact js中,我们使用
MessageProviderPact
来验证合同。但在运行测试时,正文应位于如下内容属性中:

Key: - is expected 
            + is actual 
       Matching keys and values are not shown

       -[
       -  "test"
       -]
       +{
       +  "contents": {
       +    "statusCode": 200,
       +    "body": "[test]"
       +  }
       +}
用于pact验证的代码

const p = new MessageProviderPact({
        messageProviders: {
            '': handler
        },
        provider: 'provider-service',
        pactUrls: [
            path.resolve(
                process.cwd(),
                'pacts',
                'consumer-service-provider-service.json'
            )
        ]
    });

有没有办法解决这个问题?是否可以在消费者端使用内容键的类似消息结构?或者我们可以在提供者端以任何其他方式解决它

MessageProviderPact
用于消息队列类型的交互,而不是HTTP交互。我认为您需要标准的
验证器
类():

const{Verifier}=require('@pact foundation/pact');
让选项={
...
};
新验证器(opts).verifyProvider().then(函数(){
//做点什么
});

MessageProviderPact
用于消息队列类型的交互,而不是HTTP交互。我认为您需要标准的
验证器
类():

const{Verifier}=require('@pact foundation/pact');
让选项={
...
};
新验证器(opts).verifyProvider().then(函数(){
//做点什么
});

这方面有什么更新吗?我使用与你类似的设置。Java Provider和JavaScript consumerAs建议,此处的
MessageProviderPact
是错误的选择。使用标准的
验证器
类,它正在进行任何更新?我使用与你类似的设置。Java Provider和JavaScript consumerAs建议,此处的
MessageProviderPact
是错误的选择。使用标准的
验证器
类,它正在工作