play2-reactivemongo
でいくつかの機能テストを実行しようとしています。私は可能な限り具体的にしようとしますが、何かが欠けている場合は私に知らせてください。Play Framework 2.5 ApplicationLifecycle Guice Specs2のテスト
私はこのエラー
を取得し、テストを実行しようとすると私の依存関係がここにDaoSpecResources.scala
trait DaoSpecResources {
val timeout = DurationInt(10).seconds
val fakeApp = new GuiceApplicationBuilder()
.in(Mode.Test)
.configure(
"play.modules.enabled" -> List("play.modules.reactivemongo.ReactiveMongoModule"),
"mongodb.uri" -> "mongodb://localhost:27017/test"
)
.build
val reactiveMongoApi = fakeApp.injector.instanceOf[ReactiveMongoApi]
...
}
で
libraryDependencies ++= Seq(
cache,
"org.reactivemongo" %% "play2-reactivemongo" % "0.12.0",
"com.mohiva" %% "play-silhouette" % "4.0.0",
"com.mohiva" %% "play-silhouette-testkit" % "4.0.0" % "test",
specs2 % Test
)
MongoUserDao.scala
で
import play.modules.reactivemongo._
import play.modules.reactivemongo.json._
import reactivemongo.play.json.collection.JSONCollection
class MongoUserDao @Inject() (val reactiveMongoApi: ReactiveMongoApi) extends UserDao {
val usersFuture = reactiveMongoApi.database.map(_.collection[JSONCollection]("users"))
...
}
です
[error] cannot create an instance for class daos.UserDaoSpec
[error] caused by com.google.inject.CreationException: Unable to create injector, see the following errors:
[error]
[error] 1) No implementation for play.api.inject.ApplicationLifecycle was bound.
[error] while locating play.api.inject.ApplicationLifecycle
[error] for parameter 1 at services.ApplicationTimer.<init>(ApplicationTimer.scala:24)
[error] at Module.configure(Module.scala:23) (via modules: com.google.inject.util.Modules$OverrideModule -> Module)
[error]
[error] 1 error
@Pawel_Bartkiewiczあなたの答えに感謝します。私はまだそれを解決しませんでした。 ReactiveMongoModuleの依存関係であるため、ApplicationLifeCycleが必要です。私は努力し続けます。 – agusgambina
@agusgambina私の答えの2番目の部分はこれを考慮しました。私は、 'ApplicationLifecycle'の提供方法の例を詳細に説明しました。私のプロジェクトでこれをテストし、それがうまくいった。 –
@Pawel_Bartkiewiczご回答いただきありがとうございます。あなたの代わりの解決策が本当に好きでした。私は本当にそれを動作させるようにしたが、できなかった。 play.modules.reactivemongo.DefaultReactiveMongoApiのデフォルトのコンストラクタにいくつかの設定を与えていないようです。正しいですか? – agusgambina