Java 如何为多部分请求编写spring云契约?
我已经在客户端和服务器之间建立了工作通信(通过REST)。现在我想添加契约测试 合同的定义如下: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(
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");