Mocha兼容的夹具支持

10
我希望从Jasmine测试转换到Mocha测试,因为它具有Before(all)的能力、报告功能以及对Coffeescript的支持。但我找不到Mocha(或与兼容的断言库一起使用)是否支持像jasmine-jquery(https://github.com/velesin/jasmine-jquery)一样的固定装置(fixture)。Mocha是否存在这样的功能?
我正在尝试测试一些操作DOM的浏览器代码(因此我将在html测试运行程序中运行它),我不想使用zombiejs,因为我更喜欢在测试环境中运行它。
编辑:仅供参考,在寻找解决方案时,我发现可以使用grunt + mocha和phantomjs实现,并且这种方式对我的情况也没有用,因为我想使用自定义版本的webkit。
2个回答

11
据我所了解,答案是否定的。这可能是因为Mocha最初是用来支持node.js的。在node中,jasmine-jquery中的fixture概念不存在,因为DOM /浏览器不存在。
查看jasmine-jquery插件的fixture支持后,我现在意识到自己构建此功能可能并不困难。基本机制是使用jQuery将外部模板添加到DOM中,同时保留对其的引用,以便可以进行清理和缓存。
如果我决定在github上发布一些东西,我会更新这个答案。
编辑:在这里 - https://github.com/badunk/js-fixtures。代码和规范基本上是从jasmine-jquery中复制的,但移除了依赖项。

js-fixtures是否也能够复制加载JSON,就像jasmine-jquery中的'getJSONFixture()'一样? - Philip Bulley
不,目前还不支持 - 我会将其作为增强功能进行研究。欢迎提交PR:https://github.com/badunk/js-fixtures/issues/12 - badunk
这还是现状吗?Mocha 中有设置和拆卸函数,并支持在浏览器中运行测试。 - Indolering

0

你试过zombie.js吗?它可以通过NPM安装,而且似乎对测试框架不太挑剔。

这个让我拥有一个完全可使用的window对象,我可以用jQuery进行装饰。

Browser = require 'zombie'

browser = new Browser()
global.window = browser.window
require '../src/js/vendor/jquery-1.7.1.min.js'

更新:

我重新审视了这个问题,看起来jquery + jsdom(通过NPM)似乎是一个更受欢迎和轻量级的解决方案。例如:http://www.netboy.pl/2012/10/testing-jquery-code-with-mocha-chai-and-jsdom/


1
JSDOM和Zombie有一些问题。例如,不支持classListdataset和其他我想使用的东西。看来我要重新回到phantomjs了。 - Jani Hartikainen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接