2017-04-09 6 views
2

私はモックレディステンプレートの問題に直面しています。 以下のクラスのユニットテストを書くのに助けてくれる人がいますか?モックレディステンプレート

以下はユニットテストクラスです。しかし、それは動作していません。 nullポイント例外を表示します

@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")); 
    }  
} 

答えて

0

redisTemplateをコンストラクタを使用して作成していて、DIによって取得されていません。 @Spy注釈を使用してみてください。

@Spy 
private RedisTemplate redisTemplate = new RedisTemplate(); 

これにより、DIがあなたのRedisTemplateのインスタンスを挿入できるようになります。

0

あなたはこのようredisTemplateを模擬することができます

@Mock RedisTemplate 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()); 
}