在Spring Boot Camel中模拟RedisTemplate



我正在尝试模拟单元测试的RedisTemplate。我知道使用 Camel Test API 可以模拟 Redis,但我有很多 Redis 请求,我发现 Mockito API 更简单、更易于使用。下面是我写的测试,它抛出了JedisConnectionException.

那么为什么我的模拟不起作用呢?

@RunWith(CamelSpringBootRunner.class)
@SpringBootTest(CustomerRoute.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
@EnableAutoConfiguration(exclude = RedisAutoConfiguration.class)
public class CustomerRouteTest extends CamelTestSupport {
@Autowired
private CamelContext camelContext;
@Override
protected CamelContext createCamelContext() throws Exception {
    return camelContext;
}
@Test
public void routeIsProcessingTheFile() throws Exception {
   // ....
}
@Configuration
static class Config {
    @Bean
    RedisTemplate<?, ?> redisTemplate() {
        RedisTemplate<?, ?> template = mock(RedisTemplate.class);
        RedisConnectionFactory connectionFactory = mock(RedisConnectionFactory.class);
        RedisConnection connection = mock(RedisConnection.class);
        when(template.getConnectionFactory()).thenReturn(connectionFactory);
        when(connectionFactory.getConnection()).thenReturn(connection);
        when(template.opsForSet()).thenReturn(mock(SetOperations.class));
        when(template.opsForHash()).thenReturn(mock(HashOperations.class));
        return template;
    }
}
}

我正在使用:

'org.apache.camel:camel-spring-boot-starter:2.20.1'
'org.apache.camel:camel-spring-redis:2.20.1'

问题是我没有在 URI 中包含模板toD并且 camel 正在使用一些默认模板(我猜(。所以修复是:

&redisTemplate=#customTemplate

相关内容

  • 没有找到相关文章

最新更新