An example of testing Spring Boot application with Spock framework
This is an example of Spring Boot app tested with Spock framework.
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'