我正在阅读这份文件sinonjs.org,对我而言,尚不清楚存根和模拟之间的区别。
有人可以用简单的话来解释我吗,还可以举一些例子来说明存根和模拟的区别吗?

附言:
我已经读过有关What is the difference between mocks and stubs ( JMock)的信息,但是答案没有示例。

最佳答案

我将尝试用几句话来解释:

  • 模拟:如果要在SUT中验证协作,请使用它。您必须模拟协作者,然后验证协作是否完成。
    var collaborator = {};
    collaborator.collaboration = sinon.mock();
    SUT.setCollaborator(collaborator);
    SUT.play();
    collaborator.collaboration.verify();
    
  • 存根:如果您需要SUT的协作者,则使用它,但测试并未测试协作。
    var collaborator = {};
    collaborator.collaboration = sinon.stub().returns(1);
    SUT.setCollaborator(collaborator);
    SUT.play();
    

  • 存根和模拟下面的技术是相似的,不同之处在于测试的目的。

    http://sinonjs.org/docs/#mocks:

    关于javascript - 在测试 spy 的上下文中, stub 和模拟之间有什么区别? ( Jasmine ),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12071192/

    10-10 22:17