问题描述
我已经在客户端和服务器之间进行了有效的通信(通过 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 (将#修改为@)