如何使用 cache2k 对过滤器进行单元测试
How to unit test a filter using cache2k
我有一个使用缓存的servlet过滤器,代码基本上是这样的
public class CustomFilter implements Filter {
private final Cache<String, ClientRequest> cache;
@Autowired
public CustomFilter(Service service){
cache = Caching.getCachingProvider().getCacheManager()
.createCache("requestsCache",
ExtendedMutableConfiguration.of(
Cache2kBuilder.of(String.class,
ClientRequest.class).entryCapacity(100)
.expireAfterWrite(1000, TimeUnit.SECONDS)));
}
}
关于如何在此过滤器中使用此 class 对方法进行单元测试的任何想法?提前致谢,
提取 Cache<String, ClientRequest>
创建到外部配置并通过过滤器构造函数注入它:
public class CustomFilter implements Filter {
private final Cache<String, ClientRequest> cache;
public CustomFilter(Cache<String, ClientRequest> cache) {
this.cache = Objects.requireNonNull(cache);
}
这样您就可以在单元测试中模拟缓存。这将允许单独测试 CustomFilter
业务逻辑,而不必处理缓存的复杂性。
之后您可能需要对缓存配置进行单独测试,例如通过使用 属性 定义到期超时。
我有一个使用缓存的servlet过滤器,代码基本上是这样的
public class CustomFilter implements Filter {
private final Cache<String, ClientRequest> cache;
@Autowired
public CustomFilter(Service service){
cache = Caching.getCachingProvider().getCacheManager()
.createCache("requestsCache",
ExtendedMutableConfiguration.of(
Cache2kBuilder.of(String.class,
ClientRequest.class).entryCapacity(100)
.expireAfterWrite(1000, TimeUnit.SECONDS)));
}
}
关于如何在此过滤器中使用此 class 对方法进行单元测试的任何想法?提前致谢,
提取 Cache<String, ClientRequest>
创建到外部配置并通过过滤器构造函数注入它:
public class CustomFilter implements Filter {
private final Cache<String, ClientRequest> cache;
public CustomFilter(Cache<String, ClientRequest> cache) {
this.cache = Objects.requireNonNull(cache);
}
这样您就可以在单元测试中模拟缓存。这将允许单独测试 CustomFilter
业务逻辑,而不必处理缓存的复杂性。
之后您可能需要对缓存配置进行单独测试,例如通过使用 属性 定义到期超时。