我有以下接收配置文件的控制器:
class Demo @Inject() (config: Configuration) extends InjectedController {
在测试文件中,我想创建控制器的实例,但是我不确定如何将配置文件传递给它:
private def controller = {
new Demo() {
override def controllerComponents: ControllerComponents = Helpers.stubControllerComponents()
}
}
我该如何实现?
答案 0 :(得分:0)
您需要两件事:
使用配置的类,然后将其注入控制器/模型类。现在,让我们说我们的类是ServiceConfiguration
,其中包含application.conf
中的值。
在测试中,您使用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
}
注意:您不希望将厨房的水槽全部放在一个地方。您可以针对不同的配置使用不同的类;然后将它们注入到其相关的控制器/模型类及其相关的测试类中。