Представьте меня есть служба:Тестирование блока с неявным классом в Scala
class ServiceA(serviceB: ServiceB) {
import Extractor._
def send(typeA: A) = serviceB.send(typeA.extract)
}
object Extractor {
implicit class Extractor(type: A) {
def extract = ???
}
}
Я хочу метод extract
быть неявно определено, поскольку он не имеет прямого отношения к A
типа/домен и является решением специальное расширение adhoc.
Теперь я хотел бы написать очень простой единичный тест, который подтверждает, что вызывается serviceB.send
.
Для этого я высмеиваю service
и передаю издевательство A
по адресу send
. Тогда я мог просто утверждать, что serviceB.send
был вызван с насмешкой A
.
Как видно из примера, метод send
также выполняет некоторую трансформацию по параметру typeA
, поэтому мне нужно было бы высмеять метод extract
для возврата моего указанного значения. Однако A
не имеет метода extract
- он исходит от implicit class
.
Итак, вопрос в том, как я высмеиваю неявный класс, как в приведенном выше примере, поскольку импорт не является гражданами первого сорта.