我正在尝试在加特林测试中检查服务调用的主体响应。但是,我想要一个 JSON 文件来检查预期的响应。为此,我使用 Feeder 并尝试使用从 Feeder 获取的值来评估实际响应。这是我所拥有的:
数据.json:
[
{"out": "pong"}
]
SmallTest.java:
public class SmallTest extends Simulation {
public SmallTest() {
final HttpProtocolBuilder httpProtocol = http
.baseUrl("https://example.com");
final FeederBuilder<Object> feeder = jsonFile("data.json");
final ChainBuilder call = exec(http("Api Response")
.post("/ping")
.check(status().is(200))
.check(jsonPath("$.result").is("${out}")));
final ScenarioBuilder scenario = scenario("Response Test")
.feed(feeder)
.exec(call);
setUp(scenario
.injectOpen(atOnceUsers(1))
).protocols(httpProtocol);
}
}
${out}
声明不起作用。我收到一条错误消息:
jsonPath($.result).find.is(${out}),但是 居然找到了乒乓球
调用http://example.com/ping的结果是以下json响应:
{
"result": "pong"
}
旁注:
我尝试使用
.check(substring("${out}").exists())
并且成功了。但这不是我想要的。似乎 ${out}
在 is()
语句中不起作用
我做错的是调用
is()
函数而不是 isEL()
。
这是因为这两个函数的工作原理。检查代码和文档以了解更多信息。
因此,使我之前的代码正常工作所需的更改是将
is("${out}")
更改为 isEL("${out}")