0
私は、プレイフレームワーク2.5でSilhouette v4.0ライブラリを使用しています。 そして、play specs2を使用してテストコードを書き込もうとしています。 しかし、私は以下のように私のテストクラスで次のエラーが発生します。パラメータenvの暗黙の値が見つかりませんでした。com.mohiva.play.silhouette.api.Environment [utils.auth.DefaultEnv]
エラーメッセージ
[error] could not find implicit value for parameter env: com.mohiva.play.silhouette.api.Environment[utils.auth.DefaultEnv]
.withAuthenticator[DefaultEnv](identity.loginInfo)
^
はここでテストクラスは、このクラスに似た他のいくつかのテストクラスがあり
package controllers
import com.google.inject.AbstractModule
import org.joda.time.DateTime
import org.specs2.specification.Scope
import org.specs2.matcher._
import org.specs2.mock._
import play.api.test._
import play.api.libs.json._
import play.api.libs.json.Json
import play.api.libs.json.Reads._
import play.api.libs.functional.syntax._
import play.api.libs.concurrent.Execution.Implicits._
import play.api.libs.mailer.{ MailerClient, Email }
import play.api.inject.guice.GuiceApplicationBuilder
import play.api.inject.bind
import com.mohiva.play.silhouette.test._
import com.mohiva.play.silhouette.api._
import com.mohiva.play.silhouette.api.repositories.AuthInfoRepository
import com.mohiva.play.silhouette.api.util._
import com.mohiva.play.silhouette.impl.providers._
import net.codingwell.scalaguice.ScalaModule
import utils.auth.DefaultEnv
class TestControllerSpec extends PlaySpecification with Mockito {
"case" in new Context {
new WithApplication(application) {
val request = FakeRequest(POST, "/api/test")
.withAuthenticator[DefaultEnv](identity.loginInfo) // <-
val result = route(app, request).get
status(result) must be equalTo OK
}
}
trait Context extends Scope {
val identity = User(
loginInfo = LoginInfo(..)
..
)
implicit val env = FakeEnvironment[DefaultEnv](Seq(identity.loginInfo -> identity))
class FakeModule extends AbstractModule with ScalaModule {
def configure() = {
bind[Environment[DefaultEnv]].toInstance(env)
}
}
lazy val application = new GuiceApplicationBuilder()
.overrides(new FakeModule)
.build
}
}
だ適切にコンパイルして実行することができます。 これはスコープに関する暗黙的な問題です。 したがって、正しくコンパイルできる別のテストクラスと同じものをすべてインポートしようとしました。しかし、まだコンパイルすることはできません。 一部のインポートがありませんか?
この問題を解決するには最後の手段だと思います。しかし、とにかくそれを解決するのが速くなります。とにかくアドバイスをいただきありがとうございます。 – Gianfrance