Requirejs 摩卡咖啡&x2B;要求发行

Requirejs 摩卡咖啡&x2B;要求发行,requirejs,mocha.js,Requirejs,Mocha.js,我试图在(Require.js)环境中运行Mocha(浏览器版本,而不是节点),但遇到了一个奇怪的问题 如果我这样做: <script src="require.js" data-main='mochaTestMain.js'></script> 我的“foo”规格结果显示出来。但是,如果我将完全相同的测试放在someFile.js中(在define语句中),测试不会显示;就好像摩卡从未意识到它的存在。如果我在description中添加console.log,它会显示

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

如果我这样做:

<script src="require.js" data-main='mochaTestMain.js'></script>
我的“foo”规格结果显示出来。但是,如果我将完全相同的测试放在
someFile.js
中(在
define
语句中),测试不会显示;就好像摩卡从未意识到它的存在。如果我在
description
中添加
console.log
,它会显示出来,但是如果我在
中添加一个
它不会显示出来


有人对我能做些什么让Mocha识别模块中定义的测试有什么建议吗?

我看不出你在哪里调用“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的内容:

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

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

})();
我有一个
mocha.run()
,但我有一个
require
,在那里我应该有一个
define
(反之亦然;我忘了),这把一切都搞砸了。谢谢你的建议。