业力中的茉莉花测试:未捕获的ReferenceError:未定义require

Igo*_*tov 46 javascript jasmine-node karma-runner

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();
        });
    });
})();
Run Code Online (Sandbox Code Playgroud)

ReferenceError:未定义require

San*_*mar 46

当我尝试require('module_name')在测试用例中使用(CommonJS样式模块)并使用Karma运行它时,我遇到了同样的问题.

原因是require浏览器无法使用该功能(它是undefined).为了将它提供给浏览器,我们可以在Karma使用karma-browserify在浏览器中运行测试用例之前浏览测试js文件.

使用安装karma-browserify npm install karma-browserify --save-dev

更新karma.conf.js

 frameworks: ['jasmine', 'browserify'],
 preprocessors: {
    'app/tests/*.js': [ 'browserify' ]
 },
 plugins: [..., 'karma-browserify'],
Run Code Online (Sandbox Code Playgroud)

在这些更改之后,浏览器化的文件由Karma在浏览器中运行,其中require定义了,并且测试用例成功运行

  • Karma-Browserfy需要安装browserfy.首先你需要browserfy,所以运行"npm install --save-dev karma-browserify browserify watchify"将解决no provider问题.确保遵循预处理器:使用逗号,这样就不会破坏karma.conf.js文件.需要Watchify来监视正在包含的文件的更改. (9认同)
  • 记得还要添加插件:['karma-browserify',...]否则,它会抱怨"无法加载"browserify""并且你将在接下来的几个小时内感到沮丧. (3认同)
  • 即使将karma-browserify放到插件数组中,我也会收到此错误:错误:没有"framework:browserify"的提供程序!(解决:框架:browserify) (2认同)
  • 实际上,将这些版本放在package.json上,您不需要添加"plugins"字段.:D"karma":"^ 1.7.0","karma-browserify":"^ 5.1.1","karma-chrome-launcher":"^ 2.2.0","karma-phantomjs-launcher":" ^ 1.0.4","karma-jasmine":"^ 1.1.0", (2认同)

小智 23

你可能正在使用一个在karma的bin目录中拾取东西的glob模式.尝试使用绝对路径执行测试以查看是否修复了它.

如果是这样,那么你知道你的glob模式正在抓住你不想要的东西.

例如改变

{pattern: '**/**/*_test.js'},
Run Code Online (Sandbox Code Playgroud)

{pattern: 'stuff/dashboard/home-page_test.js'},
Run Code Online (Sandbox Code Playgroud)

看看是否能解决您的问题.


Dav*_*ave 7

Karma是一个在浏览器中运行测试的测试运行.无论您设置什么浏览器都不知道需要的功能是什么.

要在节点上使用jasmine,请尝试使用jasmine-node.https://github.com/mhevery/jasmine-node

要让业力运行茉莉花节点测试,请尝试(等待它......)jasmine-node-karma.https://npmjs.org/package/jasmine-node-karma

这是我找到上述信息的茉莉维基页面. https://github.com/pivotal/jasmine/wiki

希望这可以帮助.

  • 是的,这没有帮助.我已经在karma.conf.js中配置了require.js的路径,但仍然出现"require is not defined"的错误 (4认同)