测试配置中的控制器

时间:2018-06-29 05:28:18

标签: playframework

我有以下接收配置文件的控制器:

class Demo @Inject() (config: Configuration) extends InjectedController {

在测试文件中,我想创建控制器的实例,但是我不确定如何将配置文件传递给它:

private def controller = {
new Demo() {
  override def controllerComponents: ControllerComponents = Helpers.stubControllerComponents()
  }
}

我该如何实现?

1 个答案:

答案 0 :(得分:0)

您需要两件事:

  1. 使用配置的类,然后将其注入控制器/模型类。现在,让我们说我们的类是ServiceConfiguration,其中包含application.conf中的值。

  2. 在测试中,您使用Guice注入和GuiceOneAppPerSuit来创建应用,并注入Configuration类。

例如,您的Demo类的测试文件将如下所示:

class DemoSpec extends GuiceOneAppPerSuit { //with whatever other trait you want to bind in, like PlaySpec, Matchers, etc. 
  val injector: Injector = app.injector
  val conf = injector.instanceOf(classOf[ServiceConfiguration])

  // Your tests 
} 

注意:您不希望将厨房的水槽全部放在一个地方。您可以针对不同的配置使用不同的类;然后将它们注入到其相关的控制器/模型类及其相关的测试类中。