gpt4 book ai didi

scala - PlayFramework Scala 测试 - 通过依赖注入(inject)器获取类的实例

转载 作者:行者123 更新时间:2023-12-01 06:23:31 24 4
gpt4 key购买 nike

我正在使用 Scala Test 来测试我的服务层。我正在努力在我的测试中获得服务类的实例。我的测试类如下

class SmsServiceSpec extends BaseSpec with OneAppPerSuite with ScalaFutures {

implicit override lazy val app: FakeApplication = FakeApplication()

"SMS Service" must {
"able to send SMS" in {

val smsService = //not sure how to get instance of class here => app.injector.getInstance[SmsService]

whenReady(smsService.sendSms("9XXXXXXX", "This is test message")) { res =>
res mustBe true
}
}
}
}

编辑代码,根据@easel
class SmsServiceSpec extends BaseSpec with OneAppPerSuite with ScalaFutures {

"SMS Service" must {
"able to send SMS" in {

@Inject val smsService: SmsService = null //not sure how to get instance of class here => app.injector.getInstance[SmsService]

whenReady(smsService.sendSms("98XXXXXX", "This is test message")) { res =>
res mustBe true
}
}
}

}

我不确定如何在上面的代码中获取 SMS 服务的实例。

谢谢,

最佳答案

您可以使用 Guice 进行依赖注入(inject)。在编译时抽象服务并在运行时指定服务抽象及其实现之间的绑定(bind)是一种很好的做法。
例如,

class SmsServiceImpl extends SmsService

bind(classOf[SmsService]).to(classOf[SmsServiceImpl])


这个, https://github.com/luongbalinh/play-mongo , 是一个简单但标准的应用程序,使用 Play 2.4.2、ReactiveMongo 和 Guice(用于依赖注入(inject))。

关于scala - PlayFramework Scala 测试 - 通过依赖注入(inject)器获取类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31004846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com