This is an example of Spring Boot app tested with Spock framework.
- Spring Boot 1.5
- Spock 1.1
These are component tests using the constructor mock injection.
Mark as a Spring Boot test without the web environment:
@SpringBootTest(webEnvironment = NONE)
Instantiate a service class with a mock dependency.
@Subject BarService service
ExternalApiClient client = Mock()
def setup() {
service = new BarService(client)
}
Declare the mock interaction by Spock style:
given:
1 * client.getDefault() >> new Hello('world')
These are end-to-end tests using the test rest template. See also Testing improvements in Spring Boot 1.4.
Mark as a Spring Boot test with the real web environment:
@SpringBootTest(webEnvironment = RANDOM_PORT)
Import the mock configuration.
@Import(IntegrationTestConfiguration)
Use the TestRestTemplate
to make a request.
@Autowired
TestRestTemplate restTemplate
Make a request to the target application:
when:
def entity = restTemplate.getForEntity('/foo', Hello)
Verify the response:
then:
entity.statusCode == HttpStatus.OK
entity.body.name == 'world'