У меня есть класс 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 в поле объекта-компаньона, это было бы здорово.Или я что-то упускаю?