Как протестировать фильтр с использованием cache2k
У меня есть фильтр сервлетов, который использует кэш, код в основном выглядит так
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)));
}
}
Любые мысли о том, как я могу юнит методы тестирования в этом фильтре, которые используют этот класс? заранее спасибо,
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
бизнес-логика изолированно, без необходимости разбираться со сложностью кеша.
После этого вам может потребоваться отдельный тест для вашей конфигурации кеша, например, с помощью свойства, чтобы определить время ожидания истечения.