2016-09-14 7 views
0

Ich habe einige Java-Tests, die RestAssured verwenden. Für viele der Tests sind die angegebenen() und when() -Parameter unterschiedlich, aber der then() -Abschnitt ist derselbe und besteht aus mehreren assertThat() -Anweisungen. Wie verschiebe ich den then() -Block auf eine neue Methode, die ich immer wieder verwenden kann?Wie man gemeinsame Behauptungen mit RestAssured wieder verwendet

@Test 
public void test_inAppMsgEmptyResponse() { 
    given(). 
      contentType("application/json"). 
    when(). 
      get("inapp/messages.json"). 
    then().assertThat(). 
      statusCode(HttpStatus.SC_OK). 
      assertThat(). 
      body("pollInterval", equalTo(defaultPollInterval)). 
      assertThat(). 
      body("notifications", hasSize(0)); 
} 

Antwort

0

Sie können ResponseSpecification verwenden, um eine Reihe von Behauptungen zu erstellen, die auf mehrere Antworten verwendet werden können. Dies ist ein bisschen anders als wie Sie die Frage formuliert haben, aber könnte sich um Ihre Bedürfnisse kümmern. In diesem Beispiel wird auch eine RequestSpecification verwendet, um allgemeine Anforderungseinstellungen einzurichten, die für mehrere Ruheaufrufe verwendet werden können. Dies ist nicht vollständig getestet, aber Ihr Code würde in etwa so aussehen:

public static RequestSpecBuilder reqBuilder; 
public static RequestSpecification requestSpec; //set of parameters that will be used on multiple requests 
public static ResponseSpecBuilder resBuilder; 
public static ResponseSpecification responseSpec; //set of assertions that will be tested on multiple responses 

@BeforeClass 
public static void setupRequest() 
{ 
    reqBuilder = new RequestSpecBuilder(); 
    //Here are all the common settings that will be used on the requests 
    reqBuilder.setContentType("application/json"); 
    requestSpec = reqBuilder.build(); 
} 

@BeforeClass 
public static void setupExpectedResponse() 
{ 
    resBuilder = new ResponseSpecBuilder(); 
    resBuilder.expectStatusCode(HttpStatus.SC_OK) 
    .body("pollInterval", equalTo(defaultPollInterval)) 
    .body("notifications", hasSize(0)); 
    responseSpec = resBuilder.build(); 
} 


@Test 
public void restAssuredTestUsingSpecification() { 
    //Setup the call to get the bearer token 
    Response accessResponse = given() 
     .spec(requestSpec) 
    .when() 
     .get("inapp/messages.json") 
    .then() 
     //Verify that we got the results we expected 
     .spec(responseSpec); 

} 
Verwandte Themen