我试图注入一个WebTestClient,以使用Spring Webflux实现一些集成测试。
我必须加载使用此配置运行的redis嵌入式软件:
@Configuration
@Profile("test")
public class EmbeddedRedisConfiguration {
private RedisServer redisServer;
public EmbeddedRedisConfiguration(@Value("${spring.redis.port}") int redisPort) {
this.redisServer = new RedisServer(redisPort);
}
@PostConstruct
public void postConstruct() {
redisServer.start();
}
@PreDestroy
public void preDestroy() {
redisServer.stop();
}
@Bean
@Primary
public ReactiveRedisOperations<String, Foo> redisOperations(@Qualifier("redissonConnectionFactory") ReactiveRedisConnectionFactory factory) {
Jackson2JsonRedisSerializer<Foo> serializer = new Jackson2JsonRedisSerializer<>(Foo.class);
RedisSerializationContext.RedisSerializationContextBuilder<String, Foo> builder = RedisSerializationContext.newSerializationContext(new StringRedisSerializer());
RedisSerializationContext<String, Foo> context = builder.value(serializer).build();
return new ReactiveRedisTemplate<>(factory, context);
}
}
上课
@ExtendWith(SpringExtension.class)
@SpringBootTest
@ActiveProfiles("test")
public class FooControllerIT {
@Autowired
WebTestClient webTestClient;
@Test
public void testSomething() {
// do something
}
}
我收到此错误:
No qualifying bean of type 'org.springframework.test.web.reactive.server.WebTestClient' available: expected at least 1 bean which qualifies as autowire candidate
如果我改变这一行
@SpringBootTest
到这条线
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
WebTestClient可用于自动装配,但是应用程序会在我的测试配置文件配置之前启动,无法连接到嵌入式Redis:
Factory method 'redisson' threw exception; nested exception is org.redisson.client.RedisConnectionException: Unable to connect to Redis server: localhost/127.0.0.1:6379
有没有注入WebTestClient而不启动web环境的方法,还是有办法在其他事情之前加载我的嵌入式redis配置?
编辑
看来问题是那js RedissonAutoConfiguration 是
装
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。