在业力中的茉莉花testing:未捕获ReferenceError:需求未定义
Karma无法识别JSFileSpec.js文件中的“require”语句。 运行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没有定义
当我试图在testing用例中使用require('module_name')
(CommonJS风格的模块)并使用Karma运行时,我遇到了同样的问题。
原因是require
function不可用于浏览器(这是undefined
)。 为了将其提供给浏览器,我们可以在使用karma-browserify在浏览器中运行testing用例之前,先浏览testingjs文件。
使用npm install karma-browserify --save-dev
来npm install karma-browserify --save-dev
更新karma.conf.js
frameworks: ['jasmine', 'browserify'], preprocessors: { 'app/tests/*.js': [ 'browserify' ] }, plugins: [..., 'karma-browserify'],
在这些变化之后,浏览过的文件在Karma中运行在浏览器中,在其中定义了需求,testing用例成功运行
您可能正在使用一个在karma的bin目录中拾取东西的glob模式。 尝试通过使用绝对path执行您的testing,看看是否修复它。
如果是这样,那么你知道你的glob模式正在抓取你不想要的东西。
例如改变
{pattern: '**/**/*_test.js'},
至
{pattern: 'stuff/dashboard/home-page_test.js'},
看看是否可以解决你的问题。
Karma是一个在浏览器中运行testing的testing运行者。 无论你设置什么浏览器,都不知道需求函数是什么。
要使用茉莉花与节点尝试茉莉花节点。 https://github.com/mhevery/jasmine-node
要有业力运行茉莉花节点testing,尝试(等待它….)茉莉花节点 – 业力。 https://npmjs.org/package/jasmine-node-karma
这里是茉莉花维基页面,我发现上面的信息。 https://github.com/pivotal/jasmine/wiki
希望这可以帮助。
我今天遇到了类似的问题。 就我而言,解决scheme非常简单。 我通过Webpack使用Babel来处理.jsx文件。 .jsx扩展名的文件testing成功,而简单的.js文件则抛出了一个引用错误。
如果任何人有类似的或相当的设置,他们可能能够共享相同的解决scheme。
在karma.config.js中,我必须为.js文件指定预处理器,就像我为.jsx文件所做的那样。 这是一个例子:
preprocessors: { "app/tests/**/*.test.jsx": ["webpack", "sourcemap"], "app/tests/**/*.test.js": ["webpack", "sourcemap"] },
我最好补充说,在我的情况下,Webpack将代码传递给Babel进行编译,以便它可以在浏览器中运行。 如果有人需要,我可以复制并粘贴整个webpack.config.js和karma.config.js。
快乐编码:)
我为此使用了webpack。 我在npm上发布了我的configuration,以节省我未来项目的时间。 只需运行npm install webpack-karma-jasmine
,然后按照文档中所述创buildwebpack和karma的configuration文件: https ://www.npmjs.com/package/webpack-karma-jasmine
如果有人仍然不能解决上述的解决scheme,这是什么帮助我。 纱线添加browserify和看