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
答案 0 :(得分:46)
当我尝试在测试用例中使用require('module_name')
(CommonJS样式模块)并使用Karma运行它时,我遇到了同样的问题。
原因是浏览器无法使用require
功能(undefined
)。为了将它提供给浏览器,我们可以在Karma使用karma-browserify在浏览器中运行测试用例之前浏览测试js文件。
使用npm install karma-browserify --save-dev
更新 karma.conf.js
frameworks: ['jasmine', 'browserify'],
preprocessors: {
'app/tests/*.js': [ 'browserify' ]
},
plugins: [..., 'karma-browserify'],
在这些更改之后,浏览器通过Karma在浏览器中运行浏览器文件,其中require
已定义,测试用例成功运行
答案 1 :(得分:22)
你可能正在使用一个在karma&bin目录中拾取内容的glob模式。尝试使用绝对路径执行测试,看看是否能修复它。
如果是这样,那么你知道你的glob模式正在抓住你不想要的东西。
例如更改
{pattern: '**/**/*_test.js'},
到
{pattern: 'stuff/dashboard/home-page_test.js'},
看看是否能解决您的问题。
答案 2 :(得分:7)
Karma是一个在浏览器中运行测试的测试运行器。无论您设置什么浏览器都不知道需要的功能是什么。
使用jasmine和node try jasmine-node。 https://github.com/mhevery/jasmine-node
要让业力运行茉莉花节点测试,请尝试(等待它......)jasmine-node-karma。 https://npmjs.org/package/jasmine-node-karma
这是我找到上述信息的茉莉花维基页面。 https://github.com/pivotal/jasmine/wiki
希望这有帮助。
答案 3 :(得分:2)
我今天遇到过类似的问题。就我而言,解决方案非常简单。我通过Webpack使用Babel来处理.jsx文件。扩展名为.jsx的文件测试成功,而简单的.js文件则引发了参考错误。
如果任何人有类似或相同的设置,他们可能能够共享相同的解决方案。
在karma.config.js中,我必须像.jsx那样为.js文件指定预处理器。这是一个例子:
preprocessors: {
"app/tests/**/*.test.jsx": ["webpack", "sourcemap"],
"app/tests/**/*.test.js": ["webpack", "sourcemap"]
},
我最好补充一点,在我的情况下,Webpack将代码传递给Babel进行编译,以便它可以在浏览器中运行。如果有人需要,我可以复制并粘贴整个webpack.config.js和karma.config.js。
答案 4 :(得分:0)
我为此目的使用webpack。我在npm上发布了我的配置,以节省我未来项目的时间。只需运行npm install webpack-karma-jasmine
,然后按照文档中所述创建webpack和karma的配置文件:https://www.npmjs.com/package/webpack-karma-jasmine
答案 5 :(得分:0)
map( ( [ routerState, state ] ) => {
const tenantKey = routerState.params[ 'tenantKey' ];
if ( state ) {
if ( state && state.id === tenantKey ) {
return {
type: '[TenantClubContext] Tenant Context Check Valid',
payload: state
};
} else {
return new LoadContextAction( tenantKey );
}
} else {
return new LoadContextAction( tenantKey );
}
} ),
catchError( err => {
return of( { type: '[TenantClubContext] Error', payload: err } );
} )
使用webpack
答案 6 :(得分:-1)
如果有人仍然无法解决上述解决方案,这对我有帮助。纱线添加浏览器并观察