Как написать интеграционные тесты для API Rest Service в споке - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть класс Java, который содержит метод API

Пример:

@GET
@Path("/{id}")
public Resposce getIds(@PathParam(name) String name) {
     //some code here 
}

Я хочу исправить интеграционный тест для этого API, т.е. во время тестирования я хочу вызвать этот метод с использованием path но не используя имя метода

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Поскольку вы явно просите Спока: вот моя стандартная реализация для 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.

0 голосов
/ 17 сентября 2018

Это сработало для меня

import com.charter.aesd.testcommons.RESTSpecification
import groovyx.net.http.HttpResponseDecorator


class TestIT extends RESTSpecification{

    def BASE_URL = "/test"
    def "Get test"(){
        when:
        HttpResponseDecorator response = getRestClient().get([path:"$BASE_URL"+"/123"])

        then:
            response.status >=200 && response.status < 400
    }

    @Override
    String getBaseUrl() {
        return 'http://localhost:8889/'
    }
}
0 голосов
/ 17 сентября 2018

Ознакомьтесь с руководствами Spring на их сайте: Тестирование веб-слоя

...