Как протестировать фильтр с использованием 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 бизнес-логика изолированно, без необходимости разбираться со сложностью кеша.

После этого вам может потребоваться отдельный тест для вашей конфигурации кеша, например, с помощью свойства, чтобы определить время ожидания истечения.

Другие вопросы по тегам