【发布时间】:2015-03-23 03:44:33
【问题描述】:
我有一个针对 Firefox OS 等的 HTML5 应用程序。 Firefox OS 中的打包应用程序无法使用 eval。 (
的 CSPdefault-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。快速浏览他们的源代码并没有出现在他们的
SpyStrategy和SpyRegistry类中对eval的引用,这些类用于在 Jasmine 中实现模拟和间谍。 -
您是在 Firefox OS 上打包的 Firefox OS 应用程序中运行单元测试吗?这令人印象深刻 :) 出于测试运行的目的,您是否可以只在 Firefox 中运行它们并仍然获得足够的覆盖率?主要区别在于缺少您必须模拟的 API。不过,您可能不需要直接测试这些 API。
-
单元测试可以在浏览器中运行,但并不是所有的功能测试都可以。特别是,对 HTML5 API 的支持正在迅速变化,例如,了解写入文件是否实际上在任何给定平台上都成功是很重要的。 Jasmine 2.x 对异步测试有很好的支持,所以我再给它一次机会。
标签: javascript unit-testing tdd bdd firefox-os