Ошибка Джексона при выполнении теста интеграции с загрузкой Sprint и GraphQL - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь написать интеграционные тесты для своего кода GraphQL с помощью Spring Boot, и у меня возникают проблемы.

Во-первых, это библиотека, которую я использую для интеграции GraphQL Spring Boot:

<dependency>
        <groupId>com.graphql-java-kickstart</groupId>
        <artifactId>graphql-spring-boot-starter</artifactId>
        <version>7.0.1</version>
    </dependency>
    <dependency>
        <groupId>com.graphql-java-kickstart</groupId>
        <artifactId>graphql-spring-boot-starter-test</artifactId>
        <version>7.0.1</version>
        <scope>test</scope>
    </dependency>

Все мои резолверы собраны идеально, я без проблем могу позвонить им из почтальона. Проблема возникает в моем тестовом коде. Я хочу провести интеграционные тесты, сквозные. Для моего первого теста вот мой файл запроса GraphQL:

query {
    clients {
        id
        name
        clientKey
        enabled
        allowAuthCode
        allowClientCredentials
        allowPassword
    }
}

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

@ExtendWith(SpringExtension::class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class ClientQueryIntegrationTest {

    @Autowired
    private lateinit var graphqlRestTemplate: GraphQLTestTemplate

    @Test
    fun test() {
        graphqlRestTemplate.addHeader("Authorization", "Bearer $token")
        val response = graphqlRestTemplate.postForResource("graphql/getAllClients.graphql")
    }

}

Когда я запускаю это, я получаю ошибку десериализации Джексона с моим начальным запросом GraphQL. Я знаю, что мой запрос GraphQL загружается правильно из-за информации в сообщении об ошибке, я просто не знаю, почему Джексон неправильно десериализирует это во время моих тестов.

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `graphql.kickstart.execution.GraphQLRequest` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('{"query":"query {\n    clients {\n        id\n        name\n        clientKey\n        enabled\n        allowAuthCode\n        allowClientCredentials\n        allowPassword\n    }\n}\n","variables":null}')
 at [Source: (String)""{\"query\":\"query {\\n    clients {\\n        id\\n        name\\n        clientKey\\n        enabled\\n        allowAuthCode\\n        allowClientCredentials\\n        allowPassword\\n    }\\n}\\n\",\"variables\":null}""; line: 1, column: 1]

Что я могу попробовать дальше ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...