Java 如何更新JVM契约中post参数的正文动态日期?

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\",

我有一个POST请求,将日期作为PACT测试合同文件中的参数

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);
}