业力中的茉莉花测试:未捕获的ReferenceError:未定义require [英] jasmine tests in karma: Uncaught ReferenceError: require is not defined

查看:299
本文介绍了业力中的茉莉花测试:未捕获的ReferenceError:未定义require的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆