RedisTemplate verfallen nicht funktioniert
Ich versuche, test ablaufen Methode in RedisTemplate. Zum Beispiel, ich Speichere session in redis, und, als zu versuchen, abrufen-Sitzung und überprüfen Sie, dass die Werte identisch sind. Für verfallen session, die ich verwenden, verfallen () - Methode der redisTemplate und für immer abgelaufen-Sitzung, die ich verwenden getExpire () - Methode. Aber es funktioniert nicht. Wie kann ich das testen Wert, gespeichert in redis?
//without import and fields
public class Cache() {
private StringRedisTemplate redisTemplate;
public boolean expireSession(String session, int duration) {
return redisTemplate.expire(session, duration, TimeUnit.MINUTES);
}
}
//Test class without imports and fields
public class TestCache() {
private Cache cache = new Cache();
@Test
public void testExpireSession() {
Integer duration = 16;
String session = "SESSION_123";
cache.expireSession(session, duration);
assertEquals(redisTemplate.getExpire(session, TimeUnit.MINUTES), Long.valueOf(duration));
}
}
aber test fehlschlägt mit AssertionError:
Erwartet :16 Aktuell :0
UPDATE:
Ich dachte, dass getExpire () - Methode nicht funktioniert, aber in der Tat verfallen () - Methode nicht funktioniert. Es gibt Sie false zurück. redisTemplate ist eine spring-Bean, die autowired zu testen-Klasse. Es gibt viele andere test-Methoden in TestCache Klasse, die ordnungsgemäß funktionieren.
- Funktioniert der key vorhanden ist, die Sie wollen, zu verfallen? Ihr code nicht enthalten einen Teil, in dem ein Schlüssel erstellt wird.
expire
gibt true zurück, wenn die ablaufen, angewendet werden konnte. Siehe redis.io/Befehle/pexpire für weitere details. - Sitzung, die ich senden als parameter an
redisTemplate.expire()
ist ein SchlüsselString session = "SESSION_123";
- Ich meinte, ob der Schlüssel "SESSION_123" zu der Zeit gab es den test auf eigene redis-Instanz.
- Es muss vorhanden sein. In meinem code, den ich verfallen Sitzung mit diesem Schlüssel. Ich start redis-server-Klasse vor und stoppen Sie nach dem Unterricht.
- Ich weiß nicht, warum, aber redisTemplate Rückkehr false aus
expire()
Methode
Du musst angemeldet sein, um einen Kommentar abzugeben.
Richte ich folgenden code, um einen test auf
getExpire()
(jedis 2.5.2, spring-data-redis 1.4.2.RELEASE):Je nach Redis-Konfiguration, alle Redis-Daten Weg sind, wenn Sie starten Sie Ihren Redis-Instanz.
Sollten Sie auch hinzufügen, eine Behauptung zu
expireSession
(assertTrue(cache.expireSession(session, duration));
), um sicherzustellen, Ablauf gearbeitet.