diff --git a/multi/multi__spring_cloud_contract_verifier_setup.html b/multi/multi__spring_cloud_contract_verifier_setup.html index 2e4075a395..d0d3becf8d 100644 --- a/multi/multi__spring_cloud_contract_verifier_setup.html +++ b/multi/multi__spring_cloud_contract_verifier_setup.html @@ -389,13 +389,51 @@ endpoint, which should be verified.
import com.jayway.restassured.module.mockmvc.RestAssuredMockMvc import spock.lang.Specification -class MvcSpec extends Specification { +class MvcSpec extends Specification { def setup() { RestAssuredMockMvc.standaloneSetup(new ExampleSpringController()) } -}
If you use Explicit mode, you can use a base class to initialize the whole tested app
-similarly, as you might find in regular integration tests. If you use the JAXRSCLIENT
-mode, this base class should also contain a protected WebTarget webTarget field. Right
+}
You can also setup the whole context if necessary.
import io.restassured.module.mockmvc.RestAssuredMockMvc; +import org.junit.Before; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.context.WebApplicationContext; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = SomeConfig.class, properties="some=property") +public abstract class BaseTestClass { + + @Autowired + WebApplicationContext context; + + @Before + public void setup() { + RestAssuredMockMvc.webAppContextSetup(this.context); + } +}
If you use EXPLICIT mode, you can use a base class to initialize the whole tested app
+similarly, as you might find in regular integration tests.
import io.restassured.RestAssured; +import org.junit.Before; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.web.server.LocalServerPort +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.context.WebApplicationContext; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = SomeConfig.class, properties="some=property") +public abstract class BaseTestClass { + + @LocalServerPort + int port; + + @Before + public void setup() { + RestAssured.baseURI = "http://localhost:" + this.port; + } +}
If you use the JAXRSCLIENT mode, this base class should also contain a protected WebTarget webTarget field. Right
now, the only option to test the JAX-RS API is to start a web server.
If your base classes differ between contracts, you can tell the Spring Cloud Contract plugin which class should get extended by the autogenerated tests. You have two options:
packageWithBaseClassesbaseClassMappingsBy Convention
The convention is such that if you have a contract under (for example)
src/test/resources/contract/foo/bar/baz/ and set the value of the
diff --git a/single/spring-cloud-contract.html b/single/spring-cloud-contract.html
index a61fed9d9a..9daa78c23f 100644
--- a/single/spring-cloud-contract.html
+++ b/single/spring-cloud-contract.html
@@ -1574,13 +1574,51 @@ endpoint, which should be verified.
import com.jayway.restassured.module.mockmvc.RestAssuredMockMvc import spock.lang.Specification -class MvcSpec extends Specification { +class MvcSpec extends Specification { def setup() { RestAssuredMockMvc.standaloneSetup(new ExampleSpringController()) } -}
If you use Explicit mode, you can use a base class to initialize the whole tested app
-similarly, as you might find in regular integration tests. If you use the JAXRSCLIENT
-mode, this base class should also contain a protected WebTarget webTarget field. Right
+}
You can also setup the whole context if necessary.
import io.restassured.module.mockmvc.RestAssuredMockMvc; +import org.junit.Before; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.context.WebApplicationContext; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = SomeConfig.class, properties="some=property") +public abstract class BaseTestClass { + + @Autowired + WebApplicationContext context; + + @Before + public void setup() { + RestAssuredMockMvc.webAppContextSetup(this.context); + } +}
If you use EXPLICIT mode, you can use a base class to initialize the whole tested app
+similarly, as you might find in regular integration tests.
import io.restassured.RestAssured; +import org.junit.Before; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.web.server.LocalServerPort +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.context.WebApplicationContext; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = SomeConfig.class, properties="some=property") +public abstract class BaseTestClass { + + @LocalServerPort + int port; + + @Before + public void setup() { + RestAssured.baseURI = "http://localhost:" + this.port; + } +}
If you use the JAXRSCLIENT mode, this base class should also contain a protected WebTarget webTarget field. Right
now, the only option to test the JAX-RS API is to start a web server.
If your base classes differ between contracts, you can tell the Spring Cloud Contract plugin which class should get extended by the autogenerated tests. You have two options:
packageWithBaseClassesbaseClassMappingsBy Convention
The convention is such that if you have a contract under (for example)
src/test/resources/contract/foo/bar/baz/ and set the value of the
diff --git a/spring-cloud-contract.xml b/spring-cloud-contract.xml
index bce78daf78..b6f5dbe5e7 100644
--- a/spring-cloud-contract.xml
+++ b/spring-cloud-contract.xml
@@ -2699,14 +2699,56 @@ import org.mycompany.ExampleSpringController
import com.jayway.restassured.module.mockmvc.RestAssuredMockMvc
import spock.lang.Specification
-class MvcSpec extends Specification {
+class MvcSpec extends Specification {
def setup() {
RestAssuredMockMvc.standaloneSetup(new ExampleSpringController())
}
}
-