静态Json文件的响应模板

时间:2019-06-19 15:54:49

标签: response templating wiremock

我正在使用Java中的WireMock来存根POST请求。该请求返回一个json主体文件,该文件存储在我的本地文件中。存根看起来像这样:

wireMockServer.stubFor(get(urlMatching("/v1/invoices/.*"))
            .willReturn(aResponse()
                .withStatus(200)
                .withBodyFile("testgetupgradeprorationamount/stubThree")));

响应正文文件的一部分“ stubThree”如下所示:

"id": "ii_1EmM93Htp4Kkdrs8",
                "object": "line_item",
                "amount": 9600,
                "currency": "usd",
                "description": "Remaining time on 3 × Business after 17 Jun 2019",
                "discountable": false,
                "invoice_item": "ii_1EmM93HtpLyYzpmOC4Kkdrs8",
                "livemode": false,
                "metadata": {
                },
                "period": {
                    "end": 1563374954,
                    "start": 1560782957
                }

请求url有许多参数,看起来像这样:

/v1/invoices/?subscription_items[0][quantity]=3&subscription_proration_date=1560892137&customer=cus_FHNIIE4b8LH7qL"

存根工作正常,但我的目标是使用响应模板提供动态响应。我只想使用请求网址中的“ subscription_proration_date”值来更新json文件的“开始”字段。

我这样更改了起始字段和存根:

"period": {
                    "end": 1566053354,
                    "start": "{{request.query.subscription_proration_date}}"
                },

wireMockServer.stubFor(get(urlMatching("/v1/invoices/.*"))
            .willReturn(aResponse()
                .withStatus(200)
                .withBodyFile("testgetupgradeprorationamount/stubThree")
                .withTransformers("response-template")));




这对我不起作用,因此任何指示都将非常有帮助。我还尝试删除文件中“开始”字段把手周围的引号,但这也不起作用。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

所以我能够解决我的问题。问题是我没有在WireMockServer实例中添加适当的扩展名:

.extensions(new ResponseTemplateTransformer(false));

如果布尔值是false,则还需要像上面我一样在每个存根的基础上指定转换器。否则,扩展名将应用于所有存根。