Scala Play 2.4:如何显式传递MessagesApi?

Scala Play 2.4:如何显式传递MessagesApi?,scala,playframework,specs2,Scala,Playframework,Specs2,我创建了一个小型CRUD应用程序,以了解更多有关Scala和Play的信息。根据CRUD模板,我获得了发布的解决方案。 我一直在努力使用Specs2为此开发有效的测试。现在我想测试控制器。其签名如下: class PersonController @Inject() (repo: PersonRepository, val messagesApi: MessagesApi) (implicit ec: ExecutionContext) exte

我创建了一个小型CRUD应用程序,以了解更多有关Scala和Play的信息。根据CRUD模板,我获得了发布的解决方案。 我一直在努力使用Specs2为此开发有效的测试。现在我想测试控制器。其签名如下:

class PersonController @Inject() (repo: PersonRepository, val messagesApi: MessagesApi)
                         (implicit ec: ExecutionContext) extends Controller with I18nSupport
为了测试控制器的动作,我应该创建一个新的控制器。虽然我看到了如何模拟存储库和WithApplication特性来提供ExecutionContext,但我看不到如何处理MessagesApi

1) 我应该创建它的实例还是从某处检索它并显式传递?怎么做

2) 我也要嘲笑它吗?怎么做


感谢您的帮助。

对于单元测试,我将使用模拟。specs2()和ScalaTest()都与Mockito有一定程度的集成

对于功能测试,我将使用
with application
scope(在specs2的情况下)并使用app injector创建控制器实例:

"should test using an injected controller" in new WithApplication {
  val applicationController = app.injector.instanceOf[controllers.Application]
  val result: Future[mvc.Result] = applicationController.index()(FakeRequest())

  status(result) must equalTo(OK)
}

这样,Play injector将创建具有所有必要依赖项的控制器实例,包括
MessageApi

单元或功能测试?Hi@marcospereira。最终,我希望两者都能做到。