最近,我阅读了很多关于合同和协作测试的文章(主要来自 JB Rainsberger)。为了融入其中,我开始了一个小项目。
据我了解,契约测试的职责是确保实现尊重其接口固有契约。换句话说,它鼓励了 Liskov 替换原则。
基本上,嘲笑对象合作者就是对它做出假设。现在,如果这些假设发生变化会发生什么?如果我像这样使用 Mockito 模拟协作者(这与存根相同):
when(collaborator.doSomething(someArgument)).thenReturn(someValue);
当我修改协作者界面(即它的合同)时,我将无法注意到这些变化。
所以这是我的问题:当伪造一个为被测系统提供间接输入的合作者时,是否应该使用存根来防止未注意到的接口/合同更改?
以下是我已经检查过的一些链接:
我希望我足够清楚,如果没有,我会尽力使这更透明。提前感谢大家。