GraphQLTestTemplate 没有自动装配
GraphQLTestTemplate not getting autowired
我正在使用 GraphQLTestTemplate 模拟查询响应。
@RunWith(SpringRunner.class)
@GraphQLTest
public class UnitTest {
@Autowired
private GraphQLTestTemplate graphQlTestTemplate ;
}
当我 运行 单元测试时它给我错误: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>
在给你一个工作片段之前,我们必须澄清一些事情。
我正在使用:
graphql-spring-boot-starter
和
graphql-spring-boot-starter-test
,两个版本 6.0.0
.
后者是嵌入junit 5
所以你可能不需要使用需要使用@RunWith
GraphQLTest 只加载应用程序的切片上下文,这是与 GraphQL 相关的 beans,也就是说,在你的测试中你应该模拟你正在使用的 beans,比如您的解析器正在使用的服务。
话虽如此:这是我的工作测试示例,希望对您有所帮助。
@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);
}
}
我正在使用 GraphQLTestTemplate 模拟查询响应。
@RunWith(SpringRunner.class)
@GraphQLTest
public class UnitTest {
@Autowired
private GraphQLTestTemplate graphQlTestTemplate ;
}
当我 运行 单元测试时它给我错误: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>
在给你一个工作片段之前,我们必须澄清一些事情。
我正在使用:
graphql-spring-boot-starter
和
graphql-spring-boot-starter-test
,两个版本6.0.0
.后者是嵌入
junit 5
所以你可能不需要使用需要使用@RunWith
GraphQLTest 只加载应用程序的切片上下文,这是与 GraphQL 相关的 beans,也就是说,在你的测试中你应该模拟你正在使用的 beans,比如您的解析器正在使用的服务。
话虽如此:这是我的工作测试示例,希望对您有所帮助。
@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);
}
}