Citrus Frameworkで IT テストを作成しています。サーバーへの呼び出しが 2 つあります。1 つはユーザーを作成するため、もう 1 つはそのユーザーで何らかの操作を実行するためです。
問題: 2 番目の呼び出しの要求に入れるために、文字列ではないユーザー作成要求からの値が必要です。値の抽出:
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));
}