我想运行测试运行器以及我的Zombie测试的命令行。到目前为止,我尝试的是:
1)一次测试
var Browser = require('zombie'),
should = require('should'),
browser = new Browser();
describe('Loads pages', function() {
it('Google.com', function(done) {
browser.visit('/index.html', function () {
browser.text('title').should.equal('Hello World');
done();
});
});
});
2)这个Html页面
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tests</title>
<link rel="stylesheet" media="all" href="../node_modules/mocha/mocha.css">
</head>
<body>
<div id="mocha"><p><a href=".">Index</a></p></div>
<div id="messages"></div>
<div id="fixtures"></div>
<!--Imports -->
<script src="../node_modules/should/should.js"></script>
<script src="../node_modules/mocha/mocha.js"></script>
<script src="vendor/require.js"></script>
<script>mocha.setup('bdd')</script>
<!--Tests -->
<script src="test.js"></script>
<script>
onload = function(){
var runner = mocha.run();
};
</script>
</body>
</html>
从命令行运行mocha一切都很好,但如果我打开浏览器页面,我会得到..
错误:尚未为上下文加载模块名称“zombie”:_。使用 要求([])http://requirejs.org/docs/errors.html#notloaded
我正在寻找加载节点模块中的zombie.js文件,但我看不出任何明显的东西? 有没有办法摆脱这个错误并使其工作?
答案 0 :(得分:0)
var Browser = require('zombie'),
这是nodejs语法,但您在浏览器中的requirejs上下文中使用它。 requirejs抱怨你必须使用amd格式加载模块,如:
var Browser = require(['zombie'], function(zombie) { ... });
但这无论如何都行不通,因为zombie是为nodejs(命令行)构建的。它会尝试一切来模拟浏览器 - 所以在浏览器中实际调用它有点太多了。
你想让僵尸测试在摩卡测试跑步者中出现的原因是什么?将测试分离为将从命令行(使用僵尸)调用的验收测试以及将使用testrunner调用的实际单元测试(针对浏览器,没有僵尸)的调试。