1
我想測試一些操作。他們需要我使用Silhouette創建的安全性內容。玩框架GuiceApplicationBuilder不加載啓用模塊配置
我有一個模塊配置DI的剪影在security.Module
,在我conf/application.conf
文件我也行:
play.modules.enabled += "security.Module"
當我運行我的測試中,我得到一個錯誤說:
No implementation for com.mohiva.play.silhouette.api.Silhouette<security.JwtEnv> was bound.
如果我在我的security.Module
類中設置了一個斷點,它從來沒有被觸發。但是,如果我在我的主Module
類中設置斷點,它是。所以我可以看到我的security.Module
永遠不會被加載,儘管文檔GuiceApplicationBuilder說啓用的模塊自動加載。
下面是我在我的測試類(基於scalatest)配置GuiceApplicationBuilder
:
class TestUserController extends PlaySpec with OneAppPerTest with Results {
val identity = UserDao(
id = Some(10),
email = Some("[email protected]"),
createdAt = DateTime.parse("2016-11-11T11:11:11")
)
val loginInfo = LoginInfo("credentials", identity.email.get)
implicit val env = FakeEnvironment[JwtEnv](Seq(loginInfo -> identity))
implicit override def newAppForTest(td: TestData) = new GuiceApplicationBuilder()
.overrides(bind[UsersBlockedRepo].to[MockUsersBlockedRepo])
.build
//...
}
我缺少的是讓GuiceApplicationBuilder
加載我的安全模塊?
儘管擁有模塊的構造函數參數,但我遇到了同樣的問題。我正在使用'GuiceOneAppPerSuite'。應用程序正常工作,但在測試過程中,儘管在application.conf中啓用了它,但並未加載我的模塊類。 'mvn test'可以運行,但是從eclipse運行單個測試失敗 – nir
我只是通過更正構建路徑下的app,conf和test目錄的輸出文件夾來修復它。不知何故,我讓他們去分開目錄,然後通常目標目標dir的maven。 – nir