【问题标题】:sinon.stub() vs sinon.sandbox.stub()?sinon.stub() vs sinon.sandbox.stub()?
【发布时间】:2014-07-16 12:43:48
【问题描述】:

在我们的前端单元测试中使用 sinonsinon-qunit,我很难理解这些方法的区别。我们正在使用sinon.sandbox.stub()(字面意思是函数,我们不创建沙箱)并且这些存根显然在每次测试后自动恢复。我只是在文档中的任何地方都没有看到这一点。

我认为这种方法不存在,我认为您需要使用sinon.sandbox.create() 显式创建沙箱。在该沙盒对象上,您将调用存根函数i.e. mySandbox.stub(),而不是"sinon.sandbox.stub()"

谁能帮我理解一下?

【问题讨论】:

  • 您确定不在after() 块中调用.restore() 吗?它唯一额外做的就是将存根添加到内部列表中,当调用.restore() 时,它会恢复内部的所有存根。
  • 我们绝对不会在任何地方调用恢复。我的猜测是 sinon-qunit 框架在幕后做这件事。
  • 根据文档,它会自动恢复所有存根/间谍jQuery.ajax fakes。

标签: javascript unit-testing qunit sinon


【解决方案1】:

存根 - Sinon.JS

sinon.stub(); 阅读自 here


沙盒 - Sinon.JS

sandbox.stub(); 阅读来自here 的详细信息

sinon.stub 几乎完全相同,只是还将返回的存根添加到内部伪造集合中,以便通过sandbox.restore() 轻松恢复。

沙盒存根方法也可用于存根任何类型的属性。如果您需要在测试期间覆盖对象的属性并在测试完成时恢复它,这将非常有用

【讨论】:

    猜你喜欢
    • 2019-06-14
    • 2012-03-12
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2014-12-02
    • 2020-07-05
    • 1970-01-01
    相关资源
    最近更新 更多