我为一个基于Require.js的站点提供了优秀的use shim,其中包含了Mocha.js。
在使用Require.js时,如何访问由Mocha声明的定义()和it() BDD函数?
下面是一个基本的代码示例:
test.js:
var mocha = require('use!mocha')
, testFile = require('testFile.js')
mocha.setup('bdd');
mocha.run();testFile.js:
define(function(require) {
// describe() and it() are not available
describe('Book', function() {
it('should have pages', function() {
});
});
});在浏览器中运行时出现错误Uncaught ReferenceError: describe is not defined。
我尝试过window.describe,并尝试将require('testFile.js')移到mocha.setup('bdd')之后。我知道我错过了什么。可能以某种方式将上下文传递给了mocha。
发布于 2012-12-21 18:24:59
问题是像describe和it这样的全局函数是由mocha.setup()设置的。在导出mocha之前,可以使用shim config的init属性来调用mocha.setup()。
requirejs.config({
shim: {
'mocha': {
init: function () {
this.mocha.setup('bdd');
return this.mocha;
}
}
}
});
require(['mocha', 'test/some_test'], function (mocha) {
mocha.run();
});测试文件需要mocha。
define(['mocha'], function (mocha) {
describe('Something', function () {
// ...
});
});填充配置的init属性是在RequireJS 2.1中引入的。您也许能够在RequireJS 2.0中使用exports属性,而不是init。
发布于 2012-02-24 04:49:54
我在geddski的amd-testing examples项目中找到了解决方案。
而不是在顶部包含测试文件和mocha,如下所示:
define(['use!mocha', 'testFile'],
function(Mocha, TestFile) {
mocha.setup('bdd');
mocha.run();
});测试文件应该作为另一个require调用和嵌入在回调中的mocha.run()来包含:
define(['use!mocha'],
function(Mocha) {
mocha.setup('bdd');
// Include the test files here and call mocha.run() after.
require(['testFile'],
function(TestFile) {
mocha.run();
});
});https://stackoverflow.com/questions/9369690
复制相似问题