Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

475
Vistas
Simulacro de plantilla redis

Estoy enfrentando un problema en la plantilla de redis simulada. ¿Alguien puede ayudarme a escribir una prueba unitaria para la siguiente clase?

 @Repository public class CasheRepo { @Autowired private RedisTemplate<String, Object> template; public Object getObject(final String key) { return template.opsForValue().get(key); } }

Y debajo está la clase de prueba unitaria. Pero no está funcionando. Muestra excepciones de puntos nulos.

 @RunWith(MockitoJUnitRunner.class) public class CashRepoTest { @InjectMocks private CasheRepo casheRepo = new CasheRepo(); private @Mock RedisConnection redisConnectionMock; private @Mock RedisConnectionFactory redisConnectionFactoryMock; private RedisTemplate redisTemplate; @Before public void setUp() { Mockito.when(redisConnectionFactoryMock.getConnection()).thenReturn(redisConnectionMock); redisTemplate = new RedisTemplate(); redisTemplate.setConnectionFactory(redisConnectionFactoryMock); redisTemplate.afterPropertiesSet(); } @Test public void getObjectTest() { Mockito.doNothing().when(redisTemplate).opsForValue().set("spring", "data"); redisTemplate.afterPropertiesSet(); System.out.println(redisTemplate.opsForValue().get("spring")); } }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

puedes burlarte de redisTemplate así:

 @Mock RedisTemplate<String, String> redisTemplate; @Mock private ValueOperations valueOperations; @Before public void setUp() { MockitoAnnotations.initMocks(this); Mockito.when(redisTemplate.opsForValue()).thenReturn(valueOperations); Mockito.doNothing().when(valueOperations).set(anyString(), anyString()); }
over 4 years ago · Santiago Trujillo Denunciar

0

Está creando redisTemplate a través del constructor, y DI no lo obtuvo. Intenta usar la anotación @Spy:

 @Spy private RedisTemplate redisTemplate = new RedisTemplate();

Permitirá que DI inyecte su instancia de RedisTemplate.

over 4 years ago · Santiago Trujillo Denunciar

0

Para aquellos que quieran hacer lo mismo con HashOperations get() y put()

 @Mock RedisTemplate<String, String> redisTemplate; @Mock private HashOperations hashOperations; @Test void getFromCache() { Mockito.when(redisTemplate.opsForHash()).thenReturn(hashOperations); when(hashOperations.get("test-key", "test-hash-key")).thenReturn("value123"); RedisCacheServiceImpl cacheService = new RedisCacheServiceImpl(redisTemplate); assertEquals("value123", cacheService.getFromCache("test-key", "test-hash-key")); }

Espero que te ayude ;)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda