requirejs mocha上下文错误

时间:2014-03-28 06:40:58

标签: javascript requirejs mocha

使用requirejs和context配置时,我有一个简单的mocha测试失败。

此处A.js

define([], function(){
    return {};
}); 

这是测试spec.js

var requirejs = require('requirejs');

var localReq = requirejs.config({
    baseUrl: "./",
    context: "context1"
})

describe("context test", function () {
    it("should not throw error", function () {
        for (var i = 0; i < 100; i++) {
            console.log(localReq("A"), i);
        }
    });
});    

当我运行测试mocha spec.js时,我收到以下错误:

未捕捉错误:尝试加载&#34; A&#34;在/Users/khirakawa/work/test/node_modules/mocha/bin/A.js然后尝试了节点的要求(&#34; A&#34;)并且失败并出现错误:错误:找不到模块&# 39; A&#39;

这是一个截图:

fail

注意A如何正确加载和记录100次,但测试仍然失败。如果我注释掉context配置,它就可以正常工作。

摩卡也在打印#1; 1&#39;并且&#39; 1失败&#39;,即使只有一个测试。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

您可以像这样编写测试:

describe("context test", function () {
    it("should not throw error", function (done) {
        localReq(["A"], function (f) { done(); });
    });
});

正如您在评论中指出的那样,调用localReq同步获取模块should work,但由于某些无法解释的原因,它不会。上面的代码调用localReq来异步加载模块。

Mocha说你的单个测试通过和失败的原因是它检测到测试结束后发生的错误并且没有其他测试与之关联。这种错误消息,其中相同的测试都通过并且失败,这肯定表明您已经异步发生了某些事情,但是您没有在Mocha测试设置中处理它。