2017-03-15 4 views
5

Ich versuche MockMvc innerhalb Gurke Tests zu verwenden, aber keine Feder Abhängigkeiten aufgelöst werden.@RunWith (Cucumber.class) und @Autowired MockMvc

habe ich diese Klasse erstellen:

@RunWith(Cucumber.class) 
@CucumberOptions(format = "pretty", features = "src/test/resources/features"}) 
@SpringBootTest 
public class CucumberTest { 

} 

Gurke Feature

Und diese Klasse für die Schritte auszuführen:

@WebMvcTest(VersionController.class) 
@AutoConfigureWebMvc 
public class VersionControllerSteps { 

    @Autowired 
    private MockMvc mvc; 

    private MvcResult result; 

    @When("^the client calls /version$") 
    public void the_client_issues_GET_version() throws Throwable { 
     result = mvc.perform(get("/version")).andDo(print()).andReturn(); 
    } 

    @Then("^the client receives status code of (\\d+)$") 
    public void the_client_receives_status_code_of(int statusCode) throws Throwable { 
     assertThat(result.getResponse().getStatus()).isEqualTo(statusCode); 
    } 

    @And("^the client receives server version (.+)$") 
    public void the_client_receives_server_version_body(String version) throws Throwable { 
     assertThat(result.getResponse().getContentAsString()).isEqualTo(version); 
    } 
} 

aber diese Wurf Ausnahme:

java.lang.NullPointerException 
at com.example.rest.VersionControllerSteps.the_client_issues_GET_version(VersionControllerSteps.java:30) 
at ✽.When the client calls /version(version.feature:8) 

Hier ist die .fe ature:

Feature: the version can be retrieved 

    As a api user 
    I want to know which api version is exposed 
    In order to be a good api user 

    Scenario: client makes call to GET /version 
    When the client calls /version 
    Then the client receives status code of 200 
    And the client receives server version 1.0 

Wie mein Test konfigurieren, Gurken und Feder-Boot zu benutzen?

Vielen Dank im Voraus.

+0

markieren, die genaue Anweisung wirft die null-Zeiger Ausnahme? – Antonio

Antwort

0

aus dem Code-Eintrag und das Fehlerprotokoll, ist es nicht klar, ob es sich um ein Problem der Gurke + Feder-Setup ist oder nur ein Anwendungsfehler.

die Stapelüberwachung Punkte an der Linie 30, die die Null-Zeiger Ausnahme werfen. Aus dem Code Listing sieht es sich um die result.getResponse().getContentAsString() Anweisungen zurückgeführt werden kann.

Es kann sich lohnen, wenn Ihr Controller tatsächlich einen Körper zurückkehrt. Zum Beispiel müssen Sie möglicherweise den zurückgegebenen Wert mit der @ResponseBody Annotation

@RequestMapping(
    value = "/campaigns/new", 
    method = RequestMethod.GET, 
    ) 
    public @ResponseBody String vers() { 
     return "1.0.1"; 
    } 
Verwandte Themen