我一直在尝试采用蛋糕模式,但在适应这种编程风格方面,特别是在单元测试方面,我遇到了困难。
假设我有以下业务对象:
trait Vet {
def vaccinate(pet: Pet)
}
trait PetStore { this: Vet =>
def sell(pet: Pet) {
vaccinate(pet)
// do some other stuff
}
}
现在,我想在模拟Vet函数的情况下测试PetStore。如果我使用组合方式,我将创建一个mock[Vet]并将其传递给PetStore构造函数,然后像在Java世界中那样编写mock。然而,我找不到任何关于如何在蛋糕模式中实现这一点的参考资料。
可能的解决方案之一是根据预期的使用情况在每个测试用例中实现vaccinate(),但这样就无法验证mock是否被正确调用,也无法使用匹配器等。
那么,人们如何在Cake Pattern中使用mock对象呢?