【问题标题】:Is there a JavaScript spy/mock/stub library that doesn't use eval?是否有不使用 eval 的 JavaScript 间谍/模拟/存根库?
【发布时间】:2015-03-23 03:44:33
【问题描述】:

我有一个针对 Firefox OS 等的 HTML5 应用程序。 Firefox OS 中的打包应用程序无法使用 eval。 (

的 CSP
default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'

有效,不能放松。)我的应用程序本身不使用 eval,但我知道的 spy/mock/stub 库,例如 Sinon,使用。因此,在 Firefox OS 下运行时,我使用 spy、mock 或 stub 的单元测试会失败。 (它们在常规浏览器中成功。)显然,我可以手动创建间谍、模拟和存根,但我宁愿不重新发明轮子。

是否有不使用 eval 的 JavaScript spy/mock/stub 库?

【问题讨论】:

  • 您可以查看Jasmine。快速浏览他们的源代码并没有出现在他们的 SpyStrategySpyRegistry 类中对 eval 的引用,这些类用于在 Jasmine 中实现模拟和间谍。
  • 您是在 Firefox OS 上打包的 Firefox OS 应用程序中运行单元测试吗?这令人印象深刻 :) 出于测试运行的目的,您是否可以只在 Firefox 中运行它们并仍然获得足够的覆盖率?主要区别在于缺少您必须模拟的 API。不过,您可能不需要直接测试这些 API。
  • 单元测试可以在浏览器中运行,但并不是所有的功能测试都可以。特别是,对 HTML5 API 的支持正在迅速变化,例如,了解写入文件是否实际上在任何给定平台上都成功是很重要的。 Jasmine 2.x 对异步测试有很好的支持,所以我再给它一次机会。

标签: javascript unit-testing tdd bdd firefox-os


【解决方案1】:

Jasmine 2.2 (http://jasmine.github.io/2.2/introduction.html#section-Spies) 的间谍确实在 Firefox OS 应用程序中运行良好,您可以使用更自然的 Mocha 语法进行异步测试。

不过,由于 Jasmine 的期望和间谍的语法与期望.js 和 sinon.js 不同,因此重写我的测试确实花了一些时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    相关资源
    最近更新 更多