jasmine 2.0,requirejs,testr - 只是一个没有错误的空白页面

时间:2014-05-04 21:20:10

标签: javascript testing requirejs jasmine testr

似乎有很多帖子正在努力解决Jasmine 1.3和Requirejs,但我遇到了2.0问题。我正在使用Jasmine 2.0进行测试,需要AMD进行AMD兼容性测试,以及testr在我的测试中模拟我的一些模块。

但是,当我打开页面时,它在控制台中没有任何内容,它是空白的。

如果项目更有帮助,您可以在https://github.com/nopwd/client完整查看该项目。

我设置了test.html页面:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>NoPwd Testing Rig</title>

        <link type="text/css" rel="stylesheet" href="lib/jasmine/lib/jasmine-core/jasmine.css" />
    </head>
    <body>
        <script language="javascript" type="text/javascript" src="lib/requirejs/require.js"></script>
        <script language="javascript" type="text/javascript" src="lib/testr.js/testr.js"></script>

        <script language="javascript" type="text/javascript">
            testr.config({
                root: './',
                baseUrl: './',
                ignore: ['lodash']
            });

            testr.run('test.js', function() {});
        </script>
    </body>
</html>

我还有一个test.js文件,它是入口点:

require.config({
    paths: {
        // ...
    },
    shim: {
        'jasmine/jasmine': {
            exports: 'window.jasmineRequire'
        },
        'jasmine/jasmine-html': {
            deps: ['jasmine/jasmine'],
            exports: 'window.jasmineRequire'
        },
        'jasmine/boot': {
            deps: ['jasmine/jasmine', 'jasmine/jasmine-html'],
            exports: 'window.jasmineRequire'
        },
        'jasmine-ajax': {
            deps: ['jasmine/jasmine', 'jasmine/boot'],
            exports: 'window.jasmineRequire'
        }
    }
});

require(
    [
        'jasmine/jasmine-html', 'jasmine/boot', 'jasmine-ajax',
        'spec/nopwd-spec', 'spec/hash-spec', 'spec/transport-spec'
    ],
    function() {
        'use strict';
    }
);

我知道以前的Jasmine版本你必须调用jasmine.getEnv().execute()但是2.0似乎不是这样。

1 个答案:

答案 0 :(得分:1)

基本上,问题在于茉莉会将自己附加到window.onload()。现在调用require()后,window.onload()已经被使用,因此处理程序永远不会被调用。我找到的答案是在入口点内手动调用window.onload()(对我来说:test.js)。

这是一个很好的例子here