springspring-bootgraphql-spring-boot

GraphQLTestTemplate not getting autowired


I am using GraphQLTestTemplate to mock responses for queries.

@RunWith(SpringRunner.class)
@GraphQLTest
public class UnitTest {

    @Autowired
    private GraphQLTestTemplate graphQlTestTemplate ;
}

When i run unit test it is giving me error : org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.graphql.spring.boot.test.GraphQLTestTemplate' available: expected at least 1 bean which qualifies as autowire candidate.

pom.xml:

        <graphql-spring-boot-starter-test.version>5.0.2</graphql-spring-boot-starter-test.version>
        <graphql-java-tools.version>5.2.4</graphql-java-tools.version>

Solution

  • Before giving you a working snippet we must clarify a few things.

    With that said: here is my working test example, Hope it helps.

    @GraphQLTest
    public class UserQueryIntTest {
    
    
        @Autowired
        private GraphQLTestTemplate graphQLTestTemplate;
    
        @MockBean
        UserService userServiceMock;
    
    
        @Test
        @WithMockUser(username = TEST_USERNAME)
        public void getUser() throws Exception {
    
            User user = new User();
            user.setUsername(TEST_USERNAME);
            user.setPassword(TEST_PASSWORD);
            doReturn(user).when(userServiceMock).getUser(TEST_USERNAME, TEST_PASSWORD);
    
            GraphQLResponse response = graphQLTestTemplate.postForResource("graphql/get-user.graphql");
            assertThat(response.isOk()).isTrue();
            assertThat(response.get("$.data.getUser.id")).isNotNull();
            assertThat(response.get("$.data.getUser.username")).isEqualTo(TEST_USERNAME);
        }
    }