想象我有一個服務: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
。
所以問題是 - 我如何模擬隱式類,如上例所示,因爲輸入不是一等公民。