私はキュウリのbddテストをやっています。私はクラス[MyClient]
を持っていて、安心してメソッドをラップしています。私は[MyClient]
を呼び出す複数のクラスを持っています。RestAssured:リクエストを送信した後、RequestSpecificationフィールドまたはパラメータを取得するにはどうすればよいですか?
私はput、postなどのメソッドを実行できますが、実際にはリクエストフィールド(ヘッダ、本文...)を要求する方法があるかどうかは疑問です。
また、応答を取得して解析するのに問題はありませんが、リクエストを送信できません。
次のことを考えると、私はrequest
というフィールドにRequestSpecification
インスタンスを格納するsendPostRequest()
を呼び出すことができますし、私はgetter
を呼び出すことで、いつでもそれを取得することができます。しかし、私は個々のフィールドをRequestSpecification
オブジェクトから取ることはできません。 debugger
から、私はフィールドがちょうど良いことが分かりましたので、私はそれを得るためのいくつかのきれいな方法がなければならないと思っていました。
私は既にlog()
を試しましたが、私に必要なものを与えてくれないようです。 何か助けていただければ幸いです!
CALLINGクラス:
public class MyInterfaceSteps() {
private myClient = new MyClient();
public sendPostRequest(){
myClient.post(someHeaders, someBody, someUrl);
}
}
クライアントクラス:
public class MyClient() {
private RequestSpecification request;
private Response response;
public getRequest() {
return request;
}
public getResponse() {
return response;
}
public Response post(Map<String, String> headers, String body, String url) {
request = given().headers(headers).contentType(ContentType.JSON).body(body);
response = request.post(url);
}
}
リクエストの完全なURIをtestNGカスタムレポートに追加できるようにしたいと思いました。これを行うには、 'FilterableRequestSpecification httpRequest =(FilterableRequestSpecification)RestAssured.given();'を実行してから、 'queryParam(...)'で自分のクエリパラメータを適用し、 '.get(mypath)'を実行しなければなりません。フィルタを必要とせずにリクエストを 'FilterableRequestSpecification'にキャストすることで、最後に' httpRequest.getURI() 'でURIにアクセスできます。なぜ 'getURI()'がRequestSpecificationのデフォルトメソッドではないのですか?それをFilterableRequestSpecificationにキャストしても問題はありますか? – agatheblues