似乎有很多帖子正在努力解决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似乎不是这样。
答案 0 :(得分:1)
基本上,问题在于茉莉会将自己附加到window.onload()
。现在调用require()
后,window.onload()
已经被使用,因此处理程序永远不会被调用。我找到的答案是在入口点内手动调用window.onload()
(对我来说:test.js
)。
这是一个很好的例子here。