在业力中的茉莉花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运行时,我遇到了同样的问题。

原因是requirefunction不可用于浏览器(这是undefined )。 为了将其提供给浏览器,我们可以在使用karma-browserify在浏览器中运行testing用例之前,先浏览testingjs文件。

使用npm install karma-browserify --save-devnpm 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和看