1
作爲一個例子,我有一個簡單的提取器,Planex
,拆分.plan文件字符串並將它們放回到一起。我有幾個單元測試,它很好地定義了它的行爲。這裏的提取:如何在scala中模擬或存根大小寫類和提取器?
object Planex {
def apply(metadata: String, plan: String) = {
String.format("%1$sPlan:\n%2$s", metadata, plan)
}
def unapply(str: String) = {
val ixPlanLabel = str indexOf "Plan:"
when(ixPlanLabel>=0) {
(str take ixPlanLabel, (str drop (ixPlanLabel+5)).trim)
}
}
}
我有一個Actor
使用此。
class PlanRepo(env: {
val jsonFormats: Formats
val load:() => String
val planTarget: String => Unit
}) extends Actor {
implicit val jsonFormats = env.jsonFormats
def receive = {
case (metaData: String, plan: Plan) => {
val s = Planex(metaData,write(plan))
env.planTarget(s)
}
case r: PlanRequest => {
val Planex(metaData, planStr) = env.load()
self.channel ! (metaData, read[Plan](planStr))
}
}
}
從我上PlanRepo測試中,我能夠在所有依賴的傳遞,除了Planex
。爲此,我仍然使用具體的提取器對象。所以我的回購測試實際上也在測試Planex
的單獨測試的行爲。有沒有解決的辦法?
我有一組嵌套的case類定義本文檔的json部分的層次結構的類似問題 - 我無法將它們彼此分開。
當然。不知道爲什麼我沒有想到這一點。我對混淆嵌套案例類的困惑依然存在,但我會分開討論這個問題。 – traffichazard