我正在使用Play 2.6和Play缓存抽象。
我在应用程序中配置了2个缓存,名称为" x"和" y"。
在测试期间,我想用我的假缓存实现覆盖每个缓存。
缓存使用@NamedCache("X") val cache: AsyncCacheApi
或@NamedCache("Y") val cache: AsyncCacheApi
进行注释,但我似乎无法在模块中覆盖它们:
class FakeCacheModule extends AbstractModule { override def configure(): Unit = { bind(classOf[AsyncCacheApi]).annotatedWith(Names.named("X")).toInstance(new FakeCache) bind(classOf[AsyncCacheApi]).toInstance(new FakeCache) bind(classOf[AsyncCacheApi]).annotatedWith(Names.named("Y")).toInstance(new FakeCache) } }
这些约束都不起作用。
答案 0 :(得分:0)
Names.named("")
返回com.google.inject.name.Named
的实例,但缓存绑定使用play.cache.NamedCache
注释。
Names.named()
的实施是:
public static Named named(String name) {
return new NamedImpl(name);
}
并分别使用实现NamedCache
的{{1}}实例获取NamedCacheImpl
注释的工作绑定。因此,工作解决方案将是
NamedCache