我一直在尝试采用蛋糕模式,但我很难适应这种编程风格,特别是在单元测试方面。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