Java 如何为多部分请求编写spring云契约?

Java 如何为多部分请求编写spring云契约?,java,multipart,spring-cloud-contract,Java,Multipart,Spring Cloud Contract,我已经在客户端和服务器之间建立了工作通信(通过REST)。现在我想添加契约测试 合同的定义如下: package contracts.node import org.springframework.cloud.contract.spec.Contract Contract.make { request { method 'POST' url '/sample' multipart( [ script : named(

我已经在客户端和服务器之间建立了工作通信(通过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')),
                content: value(consumer(regex(nonEmpty())), producer('params content'))),
            metadata : named(
                name: value(consumer(regex(nonEmpty())), producer('metadata name')),
                content: value(consumer(regex(nonEmpty())), producer('metadata content'))),
            documents: named(
                name: value(consumer(regex(nonEmpty())), producer('documents name')),
                content: value(consumer(regex(nonEmpty())), 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()生成测试?

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