我正在阅读这份文件sinonjs.org,而且我不清楚存根和嘲笑之间的区别 有人可以用简单的单词和一些例子解释我存根和模拟之间的区别吗?
P.S .:
我已经阅读了What is the difference between mocks and stubs ( JMock),但答案没有例子。
答案 0 :(得分:2)
我将尝试用几句话解释:
mock:如果要验证SUT中的协作,请使用它。您必须模拟协作者,然后验证协作是否已完成。
var collaborator = {};
collaborator.collaboration = sinon.mock();
SUT.setCollaborator(collaborator);
SUT.play();
collaborator.collaboration.verify();
存根:如果你需要一个合作者来使用它,你可以使用它,但测试不是测试合作。
var collaborator = {};
collaborator.collaboration = sinon.stub().returns(1);
SUT.setCollaborator(collaborator);
SUT.play();
存根和模拟下的技术是相似的,不同之处在于测试的意图。
来自http://sinonjs.org/docs/#mocks:
模拟具有可能无法通过测试的内置期望。从而, 他们执行实施细节。经验法则是:如果你 不会为某些特定的调用添加断言,不要嘲笑它。用一个 而不是存根。
答案 1 :(得分:2)
下面的重要说明将帮助您了解间谍,存根和嘲弄之间的确切区别: