如何用Guice DI和Slick运行ScalaTest?
发布时间:2020-12-16 09:43:39 所属栏目:安全 来源:网络整理
导读:我不知道如何以这种方式配置GuiceApplicationBuilder,我可以加载需要注入DatabaseConfigProvider的控制器。 我想指定一个替代的postgres数据库进行测试,或内存数据库(如果可能的话)。 码 class Userextends MySpecswith OneAppPerTest{ override def newAp
我不知道如何以这种方式配置GuiceApplicationBuilder,我可以加载需要注入DatabaseConfigProvider的控制器。
我想指定一个替代的postgres数据库进行测试,或内存数据库(如果可能的话)。 码 class User extends MySpecs with OneAppPerTest { override def newAppForTest( testData: TestData ) = new GuiceApplicationBuilder() // Somehow bind a database here,I guess? .build() "A test" should "test" in { val result = Application.instanceCache[api.controller.User] .apply( app ) .list()( FakeRequest() ) ... } } 堆栈跟踪 [info] - should return an entity *** FAILED *** [info] com.google.inject.ConfigurationException: Guice configuration errors: [info] [info] 1) No implementation for play.api.db.slick.DatabaseConfigProvider was bound. [info] while locating play.api.db.slick.DatabaseConfigProvider [info] for parameter 1 at api.controller.User.<init>(User.scala:22) [info] while locating api.controller.User [info] [info] 1 error [info] at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1042) [info] at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1001) [info] at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051) [info] at play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:321) [info] at play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:316) [info] at play.api.Application$$anonfun$instanceCache$1.apply(Application.scala:234) [info] at play.api.Application$$anonfun$instanceCache$1.apply(Application.scala:234) [info] at play.utils.InlineCache.fresh(InlineCache.scala:69) [info] at play.utils.InlineCache.apply(InlineCache.scala:55) [info] ... 解决方法
您需要向GuiceApplicationBuilder()添加一个配置,那么所有应用程序都可以通过play框架自动处理。这样的事情应该有助于:
val app = new GuiceApplicationBuilder() .configure( Configuration.from( Map( "slick.dbs.YOURDBNAME.driver" -> "slick.driver.H2Driver$","slick.dbs.YOURDBNAME.db.driver" -> "org.h2.Driver","slick.dbs.YOURDBNAME.db.url" -> "jdbc:h2:mem:","slick.dbs.default.driver" -> "slick.driver.MySQLDriver$","slick.dbs.default.db.driver" -> "com.mysql.jdbc.Driver" ) ) ) .in(Mode.Test) .build() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |