javascript – Grunt,Jasmine,Phantom,React单元测试:ReactElementValidator上的React抛出
作者:互联网
我正在使用Grunt与Phantom一起运行Jasmine单元测试.
Grunfile.js
module.exports = function (grunt)
{
"use strict";
grunt.loadNpmTasks('grunt-browserify');
grunt.loadNpmTasks('grunt-karma');
grunt.initConfig(
{
pkg: grunt.file.readJSON('package.json'),
browserify: {
dev: {
files: {
'test-output.js':['src/methods.js']
},
options: {
browserifyOptions: {
debug: true
}
}
}
},
karma:
{
unit:{
configFile:"karma.conf.js"
}
}
});
};
使用此Karma配置文件
module.exports = function(config)
{
config.set({
basePath: '',
frameworks: ['browserify', 'jasmine'],
files: [
'myDir/*.js'
],
exclude: [
],
preprocessors: {
'myDir/*.js':['browserify','reactify']
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['PhantomJS'],
browserify: {
debug: true,
transform: []
},
plugins: [
'karma-phantomjs-launcher',
'karma-jasmine','karma-bro'],
singleRun: true
});
};
React作为包在node_modules文件夹中本地安装.我可以哼哼browserify,所有东西都按预期捆绑到test-ouput.js中,但是当我做咕噜咕噜的业力时,我得到了错误:
TypeError: 'undefined' is not a function (evaluating 'ReactElementValidator.createElement.bind
如果我检查test-ouput.js文件,我可以看到ReactElementValidator.createElement.bind函数在bundle中.可能导致这种情况的任何想法?
解决方法:
这是与phantomJS< 2.0.要解决此问题,只需安装phantomjs polyfill,如下所示:
npm install --save-dev phantomjs-polyfill
并将其添加到配置中.
files: [
'node_modules/phantomjs-polyfill/bind-polyfill.js',
'myDir/*.js'
]
我希望这有帮助.
标签:javascript,reactjs,jasmine,phantomjs,gruntjs 来源: https://codeday.me/bug/20190824/1709536.html