(Applicaiton
의 여러가있을 것입니다) 테스트 케이스를 실행하는 동안 문제가있는 경우, 당신은 SyncCacheApi
및 AsyncCacheApi
의 더미 구현을 가질 수 있고, Application
provideApplication()
를 통해
@Override
protected Application provideApplication() {
Application application = new GuiceApplicationBuilder().configure(testConfig)
.disable(EhCacheModule.class)
.overrides(bind(SyncCacheApi.class).to(FakeSyncCacheApi.class))
.bindings(new MyModule())
.in(new File(".")).build();
return application;
}
을 만드는 동안 바인딩을 오버라이드 (override)
@Singleton
public class FakeSyncCacheApi implements SyncCacheApi {
private LRUMap cache = new LRUMap();
@Override
public <T> T get(String key) {
return (T) cache.get(key);
}
@Override
public <T> T getOrElseUpdate(String key, Callable<T> block, int expiration) {
return getOrElseUpdate(key, block);
}
@Override
public <T> T getOrElseUpdate(String key, Callable<T> block) {
T value = (T) cache.get(key);
if (value == null) {
try {
value = block.call();
} catch (Exception e) {
}
cache.put(key, value);
}
return value;
}
@Override
public void set(String key, Object value, int expiration) {
cache.put(key, value);
}
@Override
public void set(String key, Object value) {
cache.put(key, value);
}
@Override
public void remove(String key) {
cache.remove(key);
}
}
여기에 생각이
같은
샘플이 FakeSyncCacheApi
수있는 작품은 EhCache
모듈을 비활성화하고있다합니다 우리 자신의 더미 구현.
나는 이것을 연 2.6.3과 함께 시도했다. 오류를 수정하지 않았습니다. – nemoo
@nemoo 테스트 케이스에 문제가있는 경우 아래 내 대답을 참조하십시오. –