2015-05-05 2 views
0

Вот метод, который я пытаюсь модульного тестирования:Как я должен издеваться над этим вызовом метода?

public void setToCache(final String cacheKey, final String value) { 
    if (StringUtils.isEmpty(cacheKey)) { 
     throw new NamedSystemException(
       ENamedSystemExceptionCode.ILLEGAL_ARGUMENT_EXCEPTION, 
       "Cache Key is null or empty."); 

    } else if (StringUtils.isEmpty(value)) { 
     throw new NamedSystemException(
       ENamedSystemExceptionCode.ILLEGAL_ARGUMENT_EXCEPTION, 
       "Value is null or empty."); 
    } 

    final Jedis jedis = getJedisClient(); 

    try { 
     jedis.set(cacheKey, value); 
     jedis.expire(cacheKey, 60); 

    } finally { 
     jedis.close(); 
    } 
} 

Как я могу дразнить Jedis объект?

+1

В принципе, вы не можете. Вы можете представить себе шпионаж об объекте и mock getJedisClient(), но поскольку это статический метод, Mockito ничего не может сделать. Чтобы сделать свой код пригодным для тестирования, избегайте статических методов и используйте инъекцию зависимостей, чтобы вставлять ваши зависимости, а не искать их. –

+0

@JBNizet Я изменил его на метод экземпляра. Должен ли джид быть извлечен из экземпляра, чтобы его можно было насмехаться? –

+0

Да. Мокито не может издеваться над статическими методами. –

ответ

0

Опишите пожалуйста свой метод getJedisClient()?

Если этот метод использует объект, который вводится в классе (либо прямой экземпляр Jedis или услугу proding Jedis), вы можете легко высмеивать его с помощью

Mockito.mock(yourObject); 

Это действительно зависит от вашей getJedisClient() реализация.

Смежные вопросы