2016-12-01 80 views
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加載我的安全模塊?

回答

0

我修復了這個問題。問題是我的security.Module花費構造函數參數:

class Module(environment: PlayEnvironment, 
     configuration: Configuration) extends AbstractModule with ScalaModule {...} 

刪除那些修復它。

+0

儘管擁有模塊的構造函數參數,但我遇到了同樣的問題。我正在使用'GuiceOneAppPerSuite'。應用程序正常工作,但在測試過程中,儘管在application.conf中啓用了它,但並未加載我的模塊類。 'mvn test'可以運行,但是從eclipse運行單個測試失敗 – nir

+0

我只是通過更正構建路徑下的app,conf和test目錄的輸出文件夾來修復它。不知何故,我讓他們去分開目錄,然後通常目標目標dir的maven。 – nir