Я создаю ИТ-тесты с помощью Citrus Framework. У меня есть два вызова на сервер, один для создания пользователя и другой для выполнения некоторой операции с этим пользователем.Как отличить переменную, извлеченную из полезной нагрузки в рамках цитрусовых?
Проблема: Мне нужно значение из запроса на создание, который не является Строкой, чтобы поместить его в запрос второго вызова. Извлечение значения:
new SoapActionBuilder()
.client(webServiceClient)
.receive()
.namespace("ns", MY_NAMESPACE)
.extractFromPayload("//ns:someId", "someId")
А потом этот someId должен быть использован для создания следующего запроса. Если бы это была строка это будет:
request.setSomeId("${someId}");
Но это длинная, так что делать отливку не работает (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));
}
Спасибо @christoph, я сделал что-то на основе этой идеи, отдельный класс с потребителем и переменной, поэтому выполнение вызывает у потребителя значение переменной –