【发布时间】:2016-12-23 18:12:19
【问题描述】:
我看到这个帖子Play/Scala injecting controller into test 我也有类似的问题,但我的问题是如何注入对象来测试控制器。
控制器
@Singleton
class ExampleCtrl @Inject() (dao: TestDAO) extends Controller {
//code here
def testMethod = Action { request =>
dao.exampleMethod()
Ok(Json.obj("test" -> "test")
}
}
DAO
class TestDAO @Inject()(protected val provider: DatabaseConfigProvider){
def exampleMethod()
}
测试
class ExampleCtrlSpec extends PlaySpec with MockitoSugar {
val service = mock[TestDAO]//problem on injecting DatabaseConfigProvider
val controller = new ExampleCtrl(service)
//service has null value for DatabaseConfigProvider properties
"testMethod()" should {
"return JSON" in {
when(service.exampleMethod) thenReturn "json data"
val result: Future[Result] =
controller.testMethod().apply(FakeRequest())
.withJsonBody(JSON.json("""[{"test":"test"}]"""))
contentAsString(result) mustEqual """[{"test":"test"}]"""
}
}
}
【问题讨论】:
标签: scala playframework-2.0 scalatest