2016-09-14 1 views
0

J'ai des tests Java qui utilisent RestAssured. Pour la plupart des tests, les paramètres given() et when() sont différents, mais la section then() est la même et consiste en plusieurs instructions assertThat(). Comment déplacer le bloc then() vers une nouvelle méthode que je peux utiliser encore et encore?Comment réutiliser les assertions courantes avec RestAssured

@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)); 
} 

Répondre

0

Vous pouvez utiliser ResponseSpecification pour créer un ensemble d'assertions qui peuvent être utilisés sur plusieurs réponses. Ceci est un peu différent de la façon dont vous avez formulé la question, mais pourrait prendre soin de votre besoin. Cet exemple utilise également un RequestSpecification pour configurer les paramètres de demande communs pouvant être utilisés dans plusieurs appels de repos. Ceci n'est pas entièrement testé, mais votre code ressemblerait à ceci:

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); 

}