相关疑难解决方法(0)

Spring Boot 2 - 使用 Mockito 测试 @Cacheable 不带参数的方法不起作用

我有一个使用 Spring Boot 2 的应用程序。我想测试一个带有@Cacheable (Spring Cache) 的方法。我做了一个简单的例子来展示这个想法:

@Service
public class KeyService {

    @Cacheable("keyCache")
    public String getKey() {
        return "fakeKey";
    }
}
Run Code Online (Sandbox Code Playgroud)

和测试类:

@RunWith(SpringRunner.class)
@SpringBootTest
public class KeyServiceTest {

    @Autowired
    private KeyService keyService;

    @Test
    public void shouldReturnTheSameKey() {

        Mockito.when(keyService.getKey()).thenReturn("key1", "key2");

        String firstCall = keyService.getKey();
        assertEquals("key1", firstCall);

        String secondCall = keyService.getKey();
        assertEquals("key1", secondCall);
    }

    @EnableCaching
    @Configuration
    static class KeyServiceConfig {

        @Bean
        KeyService keyService() {
            return Mockito.mock(KeyService.class);
        }

        @Bean
        CacheManager cacheManager() {
            return new ConcurrentMapCacheManager("keyCache");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的例子不起作用。但是,如果我更改getKey()接收参数的方法: …

java spring mockito spring-boot spring-cache

5
推荐指数
1
解决办法
9741
查看次数

标签 统计

java ×1

mockito ×1

spring ×1

spring-boot ×1

spring-cache ×1