Поскольку вы явно просите Спока: вот моя стандартная реализация для ApiSpec
:
@SpringBootTest(webEnvironment = RANDOM_PORT)
abstract class AbstractServiceSpec extends Specification {
protected final static RestTestClient api = new RestTestClient()
@Value('http://localhost:${local.server.port}')
String serviceUrl
def setup() {
api.baseUrl = serviceUrl
}
def "GET /health should return 200"() {
expect:
api.get("/health").code() == 200
}
}
Обратите внимание, что RestTestClient
- моя собственная оболочка для OkHttp. Конечно, вы можете использовать любой HTTP-клиент под рукой.
Аннотация @SpringBootTest
заставляет Spring запускать весь сервис. Во время выполнения теста служба полностью запущена и вы можете тестировать свой API в «черном ящике».
Как правило, Тестирование веб-слоя - это хорошее чтение, и большая его часть - как вы можете видеть в примере - может быть выполнена как в Споке, так и в JUnit.