微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为多部分请求编写spring cloud合同?

如何解决如何为多部分请求编写spring cloud合同?

我已经在客户端和服务器之间进行了有效的通信(通过 REST)。现在我想添加合同测试。

合约定义如下:

package contracts.node

import org.springframework.cloud.contract.spec.Contract

Contract.make {
  request {
    method 'POST'
    url '/sample'
    multipart(
        [
            script   : named(
                name: value(consumer(regex(nonEmpty())),producer('script name')),content: value(consumer(regex(nonEmpty())),producer('script content'))),params   : named(
                name: value(consumer(regex(nonEmpty())),producer('params name')),producer('params content'))),Metadata : named(
                name: value(consumer(regex(nonEmpty())),producer('Metadata name')),producer('Metadata content'))),documents: named(
                name: value(consumer(regex(nonEmpty())),producer('documents name')),producer('documents content')))
        ]
    )

    headers {
      contentType('multipart/form-data')
    }
  }
  response {
    status 200
  }
}

生成的测试如下:

// omitted imports

@SuppressWarnings("rawtypes")
public class NodeTest extends NodeBase {

    @Test
    public void validate_shouldRunScripts() throws Exception {
        // given:
            RequestSpecification request = given()
                    .header("Content-Type","multipart/form-data")
                    .multiPart("script","script name","script content".getBytes())
                    .multiPart("params","params name","params content".getBytes())
                    .multiPart("Metadata","Metadata name","Metadata content".getBytes())
                    .multiPart("documents","documents name","documents content".getBytes());


        // when:
            Response response = given().spec(request)
                    .post("/sample");

        // then:
            assertthat(response.statusCode()).isEqualTo(200);
    }

}

它不能在我的服务器上正常工作。

但是,如果我将 multiPart() 行更改为这些(删除了第二个参数并摆脱了 .getBytes()):

.multiPart("script","script content")
.multiPart("params","params content")
.multiPart("Metadata","Metadata content")
.multiPart("documents","documents content");

它就像一个魅力。

如何编写一个合约来生成带有两个参数的 multiPart() 的测试?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。