我正在尝试为Scala播放应用程序编写测试,但由于无法将MyService注入类规范(以下示例代码)而陷入困境。
// ------我要注射的服务----------- ///
class MyService@Inject()(ws: WSClient,
config: Config,
myData1DAO: MyData1DAO,
myData2DAO: MyData2DAO,
myData3DAO: MyData3DAO,
myData4DAO: MyData4DAO,
myData5DAO: MyData5DAO,
myData6DAO: MyData6DAO)(implicit ec: ExecutionContext) {
def methodIWantToCallInTests = ???
}
//// ------------我的测试规格------------------- /////
class MyTestSpec Inject()(myService: MyService) extends PlaySpec with MockitoSugar {
// DOESNT WORK :(
//
"MyService" should {
"make something good" in {
new MyService( .., .., ..,).methodIWantToCallInTests // TOO LONG :(
}
}
}
尝试按代码中所示注入MyService不起作用(甚至可能是愚蠢的尝试)。我唯一在想的另一件事就是制作MyService的“新版”。
即使仅提供链接或书籍也请提供帮助,我可以在其中找到答案。谢谢您。
答案 0 :(得分:1)
我不知道通过依赖项注入来管理测试套件本身的任何可能性。 (class MyTestSpec Inject()(myService: MyService)
建议您尝试一下。
但是您可以轻松地从应用程序获取服务实例。这是Guice的示例:
import org.scalatestplus.play.PlaySpec
import org.scalatestplus.play.guice.GuiceOneServerPerSuite
class MyTestSpec extends PlaySpec with GuiceOneServerPerSuite {
"MyService" should {
"make something good" in {
val service = app.injector.instanceOf[MyService]
service.methodIWantToCallInTests
}
}
}
答案 1 :(得分:0)
您只能通过创建new
的{{1}}实例来做到这一点,除非您有MyService
个对象中有implicit
个,并且可以将类直接注入到testspec中。