我正在创建一个javascript库并且想要使用BDD,所以我试试mocha而我无法使其工作。我希望在客户端上使用该库,因此我假设从可浏览的URL运行它是有意义的,在web连接的上下文中,而不仅仅是来自unc路径的沙箱。
这里是虚拟起始点文件test / test.foobar.js
var assert = chai.assert;
var foobar = {
sayHello: function() {
return 'Hello World!';
}
};
describe('Foobar', function() {
describe('#sayHello()', function() {
it('should work with assert', function() {
assert.equal(foobar.sayHello(), 'Hello World!');
});
});
});
这是触发测试的html页面,test.html
<html>
<head>
<meta charset="utf-8">
<title>Mocha Tests</title>
<link rel="stylesheet" href="testing/mocha.css" />
<script src="testing/jquery.js"></script>
<script src="testing/mocha.js"></script>
<script>mocha.setup('bdd')</script>
<script src="testing/chai.js"></script>
<script src="test/test.foobar.js"></script>
<script> $(function() { mocha.run(); }) </script>
</head>
<body>
<div id="mocha"></div>
</body>
</html>
当我在chrome或safari中打开时
file:///Users/me/dev/sandbox/test.html
它按预期工作,测试通过没有错误
当我在chrome或safari中打开时
http://localhost/sandbox/test.html
我收到以下错误,测试失败
Error: global leak detected: script1339700707078
at Runner.checkGlobals (http://localhost/sandbox/testing/mocha.js:3139:21)
at Runner.<anonymous> (http://localhost/sandbox/testing/mocha.js:3054:44)
at Runner.emit (http://localhost/sandbox/testing/mocha.js:235:20)
at http://localhost/sandbox/testing/mocha.js:3360:14
at Test.run (http://localhost/sandbox/testing/mocha.js:3003:5)
at Runner.runTest (http://localhost/sandbox/testing/mocha.js:3305:10)
at http://localhost/sandbox/testing/mocha.js:3349:12
at next (http://localhost/sandbox/testing/mocha.js:3233:14)
at http://localhost/sandbox/testing/mocha.js:3242:7
at next (http://localhost/sandbox/testing/mocha.js:3192:23)
有人可以解释,更好的解决方案吗?
答案 0 :(得分:6)
这是使用jQuery与mocha的问题。 jQuery创建具有唯一ID的全局变量...在您的情况script133...
中。最近在mocha 1.2中发布,你可以设置通配符忽略......
$(function(){
mocha
.globals([ 'script*' ]) // acceptable globals
.run();
});
确保您是最新的,并进行适当的配置。
答案 1 :(得分:0)
我找到了解决Safari中问题的解决方案...... 替换
<script> $(function() { mocha.run(); }) </script>
通过
<script>
onload = function(){
var runner = mocha.run();
};
</script>
...但仍然在chrome中出错: - (