想象我有一个服务: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
。
所以问题是 - 我如何模拟隐式类,如上例所示,因为输入不是一等公民。