我一直在嘗試採用蛋糕模式,但我很難適應這種編程風格,特別是在單元測試方面。Scala:嘲諷和蛋糕模式
讓我們假設我有以下業務對象:
trait Vet {
def vaccinate(pet: Pet)
}
trait PetStore { this: Vet =>
def sell(pet: Pet) {
vaccinate(pet)
// do some other stuff
}
}
現在,我想測試的PetStore而從獸醫嘲笑的職能。如果我正在使用組合,我正在創建一個模擬[Vet]並將其傳遞給PetStore構造函數,然後像我們在Java世界中那樣對模擬進行編程。然而,我無法找到人們如何用蛋糕模式來做到這一點。
一個可能的解決方案是根據預期用法在每個測試用例上實現vaccinate(),但是這樣不允許我驗證這些mock是否被正確調用,不允許我使用匹配器,等等
那麼 - 人們如何使用Cake Pattern與模擬對象?
這很酷 - 但我錯過了什麼嗎?你在PetStore的Vet類型中做了什麼? – 2013-05-01 11:15:07
所以我試圖給出一個沒有使用ConfigComponent特性的例子,但我是做錯事。無論如何,我已經更新了這個例子並添加了ConfigComponent。希望事情會更加清晰。 – OleTraveler 2013-05-03 22:40:32
+1 https://www.precog.com/blog/Existential-Types-FTW/ – 2013-08-28 08:09:32