0

我有一个项目,它建立在 jQuery 上。这个网站有新功能。客户想为现有功能添加单元测试。

我制作了一个脚本来加载依赖于requireJs的qunit,并放在body标签之前

     <script> var UNITTEST_ENABLED = true ; </script>
     <script src="qunit.loader.js"></script>
</body>
</html>

qunit.loader.js定义为

(function(){

    if ( !UNITTEST_ENABLED ) {
        return ;
    }

    function loadCss(url) {
        var link = document.createElement("link");
        link.type = "text/css";
        link.rel = "stylesheet";
        link.href = url;
        document.getElementsByTagName("head")[0].appendChild(link);
    }

    var settings = {
          qunitScript : 'http://code.jquery.com/qunit/qunit-git',
          qunitCss : 'http://code.jquery.com/qunit/qunit-git.css',
          requireJsUrl : 'http://requirejs.org/docs/release/2.1.8/minified/require.js'
    };


    var xhr = $.getScript( settings.requireJsUrl );

    xhr.done(function(script, textStatus) {

        $('body').append(
            '<div id="qunit"></div>'
            +'<div id="qunit-fixture"></div>'
        );

        requirejs.config({
           paths: {
                'qunit': settings.qunitScript ,
                'unit_test_1' : 'unit.test.1'
           },
           shim: {
                'unit_test_1': { deps: ['qunit'] }
           }
        });

        loadCss( settings.qunitCss );

        requirejs(['unit_test_1']);

    }).fail(function(jqxhr, settings, exception) {
          console.log( "script loading error." );
    });

}());

我收到类似的错误Error: No define call for qunit。我是新手requirejs,这是加载模块的正确方法。

4

0 回答 0