0

我试图让 Mocha(浏览器版本,而不是 Node)在我的(Require.js)环境中运行,但我遇到了一个奇怪的问题。

如果我做:

<script src="require.js" data-main='mochaTestMain.js'></script>

然后在 mochaTestMain.js 中执行以下操作:

require(['someFile'], function() {
    describe('foo', function() {
        it('foo', function() {
            chai.expect(false).to.equal(true)
        });
    });
});

我的“foo”规范结果出现了。但是,如果我将完全相同的测试放入someFile.js(在define语句中),则测试不会显示;就像摩卡甚至从未意识到它的存在。如果我在console.log里面添加一个describe,它会显示出来,但如果我在里面添加一个it它不会。

有没有人对我可以做些什么来让 Mocha 识别模块中定义的测试有任何建议?

4

1 回答 1

1

我看不到您在哪里调用“mocha.run()” 如果它在上述测试之前运行,那可能是原因之一。

您可以通过将异步线程中的逻辑拉到内联流中来控制事情的时间:

someTestFile.js 的内容:

;(function(){

    function setUpTests(){
        describe('foo', function() {
            it('foo', function() {
                chai.expect(false).to.equal(true)
            })
        })
    }

    // note, we are returning a test "constructor"
    define(function(){return setUpTests})

})();

mochaTestMain.js 的内容:

;(function(){

    require(["someTestFile"], function(setUpTests){
        // defining of the test must come before
        setUpTests()
        // you run the test suite
        mocha.run()
    })

})();
于 2013-02-11T01:10:41.167 回答