Java 如何更新JVM契约中post参数的正文动态日期?
我有一个POST请求,将日期作为PACT测试合同文件中的参数Java 如何更新JVM契约中post参数的正文动态日期?,java,testing,pact,pact-jvm,Java,Testing,Pact,Pact Jvm,我有一个POST请求,将日期作为PACT测试合同文件中的参数 return builder .uponReceiving("A request to create a Zoom meeting") .path(createMeeting) .method("POST") .headers(headers) .body("{\"title\":\"My title\",
return builder
.uponReceiving("A request to create a Zoom meeting")
.path(createMeeting)
.method("POST")
.headers(headers)
.body("{\"title\":\"My title\",\"start_time\":\"2020-08-28T14:30:00Z+01:00\",\"duration\":30,\"provider\":\"ZOOM\"}")
.willRespondWith()
.body(body)
.toPact();
但我希望这是动态的,可能有今天或明天的日期,否则它将有一个过期的日期。请您就如何做到这一点提出建议,如果可能的话,请不要让消费者知道
这些都是我请求的消费者和提供商示例
消费者
@ExtendWith(PactConsumerTestExt.class)
public class PACTConsumerEdUiVcTest {
Map<String, String> headers = new HashMap<>();
String createMeeting = "/manage/create-meeting";
@Pact(provider = VC, consumer = ED_UI)
public RequestResponsePact createPact(PactDslWithProvider builder) {
headers.put("Content-Type", "application/json");
DslPart body = new PactDslJsonBody()
.date("start_time", "yyyy-MM-dd'T'HH:mm:ss.000'Z'", new Date());
return builder
.uponReceiving("A request to create a Zoom meeting")
.path(createMeeting)
.method("POST")
.headers(headers)
.body("{\"title\":\"My title\",\"start_time\":\"2020-08-28T14:30:00Z+01:00\",\"duration\":30,\"provider\":\"ZOOM\"}")
.willRespondWith()
.body(body)
.toPact();
}
@Test
@PactTestFor(providerName = VC, port = "8080")
public void runTest() {
//Mock url
RestAssured.baseURI = "http://localhost:8080";
Response response = RestAssured //todo: dynamic start time that won't expire. 27/08/2020
.given()
.headers(headers)
.when()
.body("{\"title\":\"My title\",\"start_time\":\"2020-08-28T14:30:00Z+01:00\",\"duration\":30,\"provider\":\"ZOOM\"}")
.post(createMeeting);
assert (response.getStatusCode() == 200);
}
}
非常感谢。更改重新启动的实现以接受
映射并使用日期作为其值,可以使其正常工作
map.put("start_time", new Date().toString());
这是整篇
@Test
@PactTestFor(providerName = VC, port = "8080")
public void runTest() {
//Mock url
RestAssured.baseURI = "http://localhost:8080";
Map<String, Object> map = new HashMap<>();
map.put("title", "MyTitle");
map.put("start_time", new Date().toString());
map.put("duration", 30);
map.put("provider", "ZOOM");
Response response = RestAssured //todo: dynamic start time that won't expire. 27/08/2020
.given()
.headers(headers)
.when()
.body(map)
.post(createMeeting);
assert (response.getStatusCode() == 200);
}
@测试
@PactTestFor(providerName=VC,port=“8080”)
公共无效运行测试(){
//模拟url
RestAssured.baseURI=”http://localhost:8080";
Map Map=newhashmap();
地图放置(“标题”、“我的标题”);
map.put(“开始时间”,new Date().toString());
地图放置(“持续时间”,30);
地图放置(“提供者”、“缩放”);
Response Response=restarsured//todo:不会过期的动态启动时间。2020年8月27日
.give()
.标题(标题)
.when()
.身体(地图)
.员额(会议);
断言(response.getStatusCode()==200);
}
能够使其工作更改重新启动的实现以接受映射
并使用日期作为其值
map.put("start_time", new Date().toString());
这是整篇
@Test
@PactTestFor(providerName = VC, port = "8080")
public void runTest() {
//Mock url
RestAssured.baseURI = "http://localhost:8080";
Map<String, Object> map = new HashMap<>();
map.put("title", "MyTitle");
map.put("start_time", new Date().toString());
map.put("duration", 30);
map.put("provider", "ZOOM");
Response response = RestAssured //todo: dynamic start time that won't expire. 27/08/2020
.given()
.headers(headers)
.when()
.body(map)
.post(createMeeting);
assert (response.getStatusCode() == 200);
}
@测试
@PactTestFor(providerName=VC,port=“8080”)
公共无效运行测试(){
//模拟url
RestAssured.baseURI=”http://localhost:8080";
Map Map=newhashmap();
地图放置(“标题”、“我的标题”);
map.put(“开始时间”,new Date().toString());
地图放置(“持续时间”,30);
地图放置(“提供者”、“缩放”);
Response Response=restarsured//todo:不会过期的动态启动时间。2020年8月27日
.give()
.标题(标题)
.when()
.身体(地图)
.员额(会议);
断言(response.getStatusCode()==200);
}