使用redis的Spring会话 - 如何在集成测试中模拟它?

fre*_*man 5 spring spring-session

所以,我在我的项目中使用spring session.如何使用它在项目中编写集成测试?我应该为春季会议内部模拟一些东西吗?或者使用嵌入式redis的任何合理方式?

我看到过去有一些@EnableEmbeddedRedis注释,但似乎已被删除:https://github.com/spring-projects/spring-session/issues/248

//编辑

我试过通过MockHttpSession

mockMvc.perform(post("/register").session(mockHttpSession)
Run Code Online (Sandbox Code Playgroud)

但春天尝试并且无论如何都无法连接到redis.

小智 8

您可以创建自己的connectionfactory和redisserializer.然后spring boot将不会创建默认bean.

例:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
public class ApplicationTest
{

    @Test
    public void contextLoads()
    {
    }


    @EnableRedisHttpSession
    @Configuration
    static class Config
    {
        @Bean
        @SuppressWarnings("unchecked")
        public RedisSerializer<Object> defaultRedisSerializer()
        {
            return Mockito.mock(RedisSerializer.class);
        }


        @Bean
        public RedisConnectionFactory connectionFactory()
        {
            RedisConnectionFactory factory = Mockito.mock(RedisConnectionFactory.class);
            RedisConnection connection = Mockito.mock(RedisConnection.class);
            Mockito.when(factory.getConnection()).thenReturn(connection);

            return factory;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)