编程语言
首页 > 编程语言> > javascript – Grunt,Jasmine,Phantom,React单元测试:ReactElementValidator上的React抛出

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