Как протестировать фильтр с использованием cache2k - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть фильтр сервлетов, который использует кеш, код в основном выглядит так:

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 Ответ

0 голосов
/ 08 ноября 2018

Извлечь 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 бизнес-логику изолированно, не сталкиваясь со сложностью кэша.

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

...