我有一个使用缓存的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)));
}
}
关于如何在使用此类的过滤器中对测试方法进行单元化的任何想法?预先感谢,
答案 0 :(得分:1)
将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
业务逻辑,而不必处理缓存的复杂性。
之后,您可能需要对缓存配置进行单独的测试,例如通过使用属性来定义到期超时。