我有一个简单的库,
-- src/lib.js --
function libtest() {
return 2;
}
我想测试,我收集的将需要PhantomJs。我有一个测试文件:
-- test/lib.test.js --
var fs = require('fs');
var assert = require('assert');
describe('Test module', function() {
var s = fs.readFileSync('../src/lib.js', 'utf8');
eval(s);
it('Shows name', function() {
assert.equal(libtest(), 2);
});
});
我为浏览器做好准备:
# browserify lib.test.js -o tests.js
然后包含在我的主页中:
-- test/index.html --
<html>
<head>
<meta charset="utf-8">
<title>Mocha Tests</title>
<link href="../../node_modules/mocha/mocha.css" rel="stylesheet" />
</head>
<body>
<div id="mocha"></div>
<script src="../../node_modules/mocha//mocha.js"></script>
<script>mocha.setup('bdd')</script>
<script src="tests.js"></script>
<script>
if (window.mochaPhantomJS) mochaPhantomJS.run();
else mocha.run();
</script>
</body>
</html>
然而,当我运行测试时:
# grunt test
我收到以下错误:
运行“mocha_phantomjs:all”(mocha_phantomjs)任务TypeError: 'undefined'不是一个函数(评估 'fs.readFileSync('.. / src / lib.js','utf8')')
在file:///Users/ekkis/Development/tst/test/tests.js:5
在 文件:///Users/ekkis/Development/tst/node_modules/mocha//mocha.js:529个
在file:///Users/ekkis/Development/tst/test/browser/tests.js:10 in s在file:///Users/ekkis/Development/tst/test/browser/tests.js:1 in e在file:///Users/ekkis/Development/tst/test/browser/tests.js:1 at file:///Users/ekkis/Development/tst/test/browser/tests.js:1090不安全 JavaScript尝试使用以下URL访问框架:框架中的空白 用URL 文件:///Users/ekkis/Development/tst/node_modules/mocha-phantomjs-core/mocha-phantomjs-core.js。 域,协议和端口必须匹配。
似乎抱怨fs
未定义。但是,如果require('assert')
有效,我会想象require('fs')
应该有效。但我不太清楚这种情况的运行背景。
我错过了什么?
答案 0 :(得分:0)
确定。答案只是将库包含在.html
中。由于测试在浏览器中运行,因此库将可用。像这样:
<body>
<div id="mocha"></div>
<script src="../../node_modules/mocha//mocha.js"></script>
<script>mocha.setup('bdd')</script>
<script src="../../src/lib.js"></script>
<script src="tests.js"></script>