我正在使用Citrus Framework创建 IT 测试。我对服务器有两个调用,一个用于创建用户,另一个用于对该用户执行某些操作。
问题:我需要创建用户请求中的一个不是字符串的值,以将其放入第二次调用的请求中。值的提取:
new SoapActionBuilder()
.client(webServiceClient)
.receive()
.namespace("ns", MY_NAMESPACE)
.extractFromPayload("//ns:someId", "someId")
然后这个someId必须用于构建下一个请求。如果它是一个字符串,它将是:
request.setSomeId("${someId}");
但它是一个 Long,所以强制转换不起作用(Citrus 稍后解析该值,并且 Long#valueOf 在那一刻执行):
request.setSomeId(Long.valueOf("${someId}"));
有什么方法可以轻松地转换该变量(可能在提取时)?
我设法使用 JavaAction 来完成它,但经常使用它非常奇怪(需要 3 行代码和一个新方法)。它是这样的:
public void test() {
...
action(new JavaActionBuilder(new JavaAction().setInstance(this))
.method("setSomeId")
.methodArgs(request, "${someId}"));
...
}
public void setSomeId(Request request, String someId) {
request.setSomeId(Long.valueOf(someId));
}