Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
481 views
in Technique[技术] by (71.8m points)

java - Unit test Redis Template executePipelined() for multi save with timeout

This is my function that uses StringLong Redis Template, and stores multi values to Redis with a timeout. I am facing a problem verifying the save operation for each key.

private final RedisTemplate<String, Long> redis;
public void store(
        List<String> keys,
        List<Long> values,
        long timeToLiveInSec
    ) {
        RedisCallback<Object> action = connection -> {
            Streams.forEachPair(
                keys.stream(),
                values.stream(),
                (key, value) -> redis.opsForValue().set(key, value, timeToLiveInSec, TimeUnit.SECONDS);
            );
            return null;
        };
        redis.executePipelined(action);
  }

I have this in my test

private RedisTemplate<String, Long> redis = mock(RedisTemplate.class);

private ValueOperations<String, Long> redisOps = mock(ValueOperations.class);

private final CacheRepository repository = new CacheRepository(redis);    

@Test
void when_storeInCacheWithTimeout_then_verify() {
    // Given
    List<String> estimationKeys = asList(CACHE_KEY_1, CACHE_KEY_2);
    List<Long> estimations = asList(10L, 20L);

    // When
    when(redis.opsForValue()).thenReturn(redisOps);

    // Test
    repository.storeEstimations(estimationKeys, estimations, 30);

    // Then
    verify(redis).executePipelined(any(RedisCallback.class));
}
question from:https://stackoverflow.com/questions/65882473/unit-test-redis-template-executepipelined-for-multi-save-with-timeout

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...