Рубрики
Без рубрики

Тестирование API-интерфейсов GraphQL в приложении с весенней загрузкой

Эта статья является четвертой статьей из серии GraphQL, от теории к реальному миру с Spring-boot…. Помечен java, graphql, spring boot, api.

Эта статья является четвертой статьей из серии GraphQL, от теории к реальному миру с Spring-boot . Но не волнуйтесь, эти истории предназначены для использования независимо от других историй. Вам просто нужно понять текущее состояние проекта, сделав это:

git clone -n https://github.com/zero-filtre/springboot-graphql-error-handling.git && cd springboot-graphql-error-handling

git checkout 71d5f771bf9a6feaf8a5b7f62947442aace2b127
git switch -c my_experimental_branch

В этой статье мы увидим, как мы можем протестировать ресурсы, которые мы определили в проекте.

Вы можете посмотреть соответствующее видео здесь:

Мы хотим убедиться, что тесты будут быстрыми, надежными и понятными.

Если вы не клонировали свой проект, то вам могут понадобиться эти зависимости в вашем pom.xml


    com.graphql-java-kickstart
    graphql-spring-boot-starter-test
    6.0.0
    test

У нас есть три ресурса для тестирования, затем мы определим три запроса GraphQL для загрузки из нашей папки ресурсов.

Если это еще не сделано, создайте этот каталог в своем проекте:

src/test/ресурсы/graphql затем создайте в нем эти 3 файла запроса.

mutation{
    createUser(username: "johndoe",password: "mypassword"){
        id
        username
    }
}
mutation{
    deleteUser(username: "johndoe"){
        id
        username
    }
}
query{
    getUser(username: "johndoe",password: "mypassword"){
        id
        username
    }
}

В нашем тестовом пакете мы создадим 2 класса: Один для тестирования мутаций, а другой для тестирования запросов.

Давайте проанализируем, что здесь происходит.

Мы хотим протестировать запросы на запись: ОНИ же распознаватели мутаций.

Поскольку мы используем graphql-spring-boot-starter-test , мы используем встроенный движок JUnit 5 Jupiter и некоторые полезные инструменты для легкой настройки graphql.

Особенно аннотацию @GraphQLTest , которая загружает только фрагмент контекста Spring, необходимый для запуска наших тестов.

Это особенно интересно, так как наши тесты должны выполняться быстро, а не ждать полной загрузки контекста heavy Spring.

Еще одним интересным инструментом является класс Тестовый шаблон GraphQL , который помогает нам отправлять реальные запросы GraphQL, которые мы определили ранее, для тестирования наших распознавателей.

Поскольку мы хотим, чтобы наши тесты выполнялись как можно быстрее, нам не нужно загружать реальные базовые компоненты, необходимые для наших распознавателей, говоря здесь о компоненте UserService. Мы просто будем издеваться над ними и указывать макету, как вести себя, когда распознаватель вызывает определенный метод.

Наконец, поскольку мы обеспечили безопасность наших ресурсов GraphQL, мы должны использовать Spring-security для издевательств над пользователями с соответствующими правами.

Мы следуем той же логике для тестирования распознавателей запросов на чтение, иначе: Решатели запросов

И это все, что вам нужно сделать, чтобы проверить, отвечают ли ваши распознаватели на запросы, которые вы от них ожидаете.

Это конец серии, надеюсь, вам понравилось.

Спасибо за чтение.

Обратная связь – это подарок 🎁 .

Оригинал: “https://dev.to/imphilippesimo/testing-your-graphql-apis-in-a-spring-boot-app-ki7”