业力中的茉莉花测试:未捕获的ReferenceError:未定义require [英] jasmine tests in karma: Uncaught ReferenceError: require is not defined
问题描述
Karma无法识别JSFileSpec.js文件中的'require'语句。运行karma.conf.js:
Karma can not recognize 'require' statement in JSFileSpec.js file. Running karma.conf.js:
(function() {
describe("DummyEmitter creation", function(){
return it("creation", function(){
var DummyEmitter = require('Util.DummyEmitter');
var dummy = new DummyEmitter('someName');
return expect(dummy).toBeDefined();
});
});
})();
ReferenceError:require未定义
ReferenceError: require is not defined
推荐答案
当我尝试在测试用例中运行 require('module_name')
(CommonJS样式模块)并运行时,我遇到了同样的问题它使用了Karma。
I was facing same issue, when trying to use require('module_name')
(CommonJS style modules) inside a test case and running it using Karma.
原因是 require
功能不适用于浏览器(它是未定义
)。为了将它提供给浏览器,我们可以在Karma使用 karma-browserify 。
The reason was require
function is not available to browser (it is undefined
). To provide it to browser we can browserify the test js files before Karma runs test case in browser using karma-browserify.
使用安装karma-browserify npm install karma-browserify --save-dev
更新 karma.conf.js
frameworks: ['jasmine', 'browserify'],
preprocessors: {
'app/tests/*.js': [ 'browserify' ]
},
plugins: [..., 'karma-browserify'],
在这些更改之后,浏览器化文件在浏览器中由Karma运行,其中定义了 require
,并且测试用例成功运行
After these changes browserified file is run in browser by Karma, in which require
is defined, and test case runs successfully
这篇关于业力中的茉莉花测试:未捕获的ReferenceError:未定义require的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!