【发布时间】:2019-10-08 03:38:21
【问题描述】:
我有一个这样的 Scala 类:
object MyClient {
private lazy val theClient: TheClient = new TheClient()
}
class MyClient {
import MyClient._
var client = null // this is only for unittest
def getSomethingFromTheClient() = {
if (client == null) client = theClient
client.getSomething() + " from MyClient"
}
}
其中一些代码只是为了方便单元测试,我可以在其中模拟 TheClient 并将其注入 MyClient,如下所示(我正在使用 Mockito):
val mockTheClient = mock[TheClient]
val testMyClient = new MyClient()
testMyClient.client = mockTheClient
testMyClient.getSomethingFromTheClient() shouldBe "blabla"
这可行,但看起来很难看。理想情况下,如果我可以将 mockTheClient 注入到伴随对象字段中,那就太好了。还是我错过了其他东西?
【问题讨论】:
-
所以我在这个问题上有四个-1。 (公平地说,还有两个 +1。)但没有一个 -1 人留下任何评论。如果您认为这个问题真的很糟糕并且应该被-1ed,我真的很感激为什么会这样。谢谢!
标签: scala mockito scalatest companion-object