ana*_*lcg 3 fs node.js jasmine gruntjs karma-runner
我正在使用Jasmine框架编写单元测试.
我使用Grunt和Karma来运行Jasmine测试文件.
我只是想在我的本地文件系统上加载文件的内容(例如example.xml).
我以为我能做到这一点:
var fs = require('fs');
var fileContent = fs.readFileSync("test/resources/example.xml").toString();
console.log(fileContent);
Run Code Online (Sandbox Code Playgroud)
这在我的Gruntfile.js中甚至在我的karma.conf.js文件中都很有效,但在我的Jasmine文件中却没有.我的Testfile看起来像这样:
describe('Some tests', function() {
it('load xml file', function() {
var fs = require("fs");
fileContent = fs.readFileSync("test/resources/example.xml").toString();
console.log(fileContent);
});
});
Run Code Online (Sandbox Code Playgroud)
我得到的第一个错误是:
'ReferenceError: require is not defined'.
Run Code Online (Sandbox Code Playgroud)
不知道为什么我不能在这里使用RequireJS,因为我可以在Gruntfiel.js中使用它,甚至在karma.conf.js中使用它!!?!?
好的,但是当手动将require.js添加到karma.conf.js文件中的files-property时,我收到以下消息:
Module name "fs" has not been loaded yet for context: _. Use require([])
Run Code Online (Sandbox Code Playgroud)
使用requirejs的数组语法,没有任何反应.
我想在使用Karma运行testfiles时,无法访问Jasmine中的Node.js功能.因此,当Karma在Node.js上运行时,为什么不能访问Nodejs的'fs'框架?
欢迎提出任何意见/建议.谢谢.
你的测试不起作用,因为karma - 是客户端JavaScript(在浏览器中运行的javascript)的测试人员,但你想用它测试node.js代码(在服务器部分运行).因此业力无法运行服务器端测试.你需要不同的testrunner,例如看一看jasmine-node.