Enzyme / Karma / Webpack / Jasmine / React 测试不工作

Enzyme / Karma / Webpack / Jasmine / React testing not working

我已经按照文档安装了

npm i --save-dev 酶

npm i --save-dev react-test-renderer react-dom(目前使用 React 15.5.4)

并更改了我的 karma.conf 文件 http://airbnb.io/enzyme/docs/guides/karma.htmlhttp://airbnb.io/enzyme/docs/guides/webpack.html

在尝试使用 Enzyme 之前,我的测试是 运行ning

但是当我使用这些导入 运行 a .spec.js 时出现加载错误

import React, {Component} from 'react';
import PropTypes from 'prop-types';
import { connect, Provider } from 'react-redux'
import ConfigureMockStore  from 'redux-mock-store';
import { mount } from 'enzyme';

一旦 import { mount } from 'enzyme'; 被击中,我就会得到(加上很多其他加载失败)

ERROR in ./~/enzyme/build/react-compat.js
Module not found: Error: Cannot resolve module 'react/addons' in D:\development\poc9-unittests\node_modules\enzyme\build
 @ ./~/enzyme/build/react-compat.js 46:16-39 47:46-69

ERROR in ./~/enzyme/build/react-compat.js
Module not found: Error: Cannot resolve module 'react/lib/ReactContext' in D:\development\poc9-unittests\node_modules\enzyme\build
 @ ./~/enzyme/build/react-compat.js 48:23-56

我的karma.conf

var webpack = require('karma-webpack');

module.exports = function (config) {
  config.set({

    singleRun: false,
    watched: true,

    frameworks: ['jasmine'],
    browsers: ['Chrome'],

    files: [
      'tests.webpack.js'
    ],

    preprocessors: {
      'tests.webpack.js': [ 'webpack', 'sourcemap' ]
    },

    reporters: [ 'dots' ],

    webpack: {
      devtool: 'inline-source-map',
      module: {
        loaders: [
          {
             test: /\.js$/, 
             loader: 'babel-loader',  
             query: {
                  presets: ['airbnb']
             }
           }
        ]
      }
    },

   externals: {
     'react/addons': true,
     'react/lib/ExecutionEnvironment': true,
      'react/lib/ReactContext': true
    },

    browserNoActivityTimeout: 300000,

    plugins: [
      'karma-webpack',
      'karma-jasmine',
      'karma-sourcemap-loader',
      'karma-chrome-launcher'
    ],

    webpackServer: {
      noInfo: true
    },


  });
};

有什么想法吗?

无法 运行 你的项目在我的机器上,但我记得过去遇到过类似的问题。尝试将以下内容添加到您的 karma 配置中(在 webpack 配置中),看看它是否修复了它:-

    webpack: {
      devtool: 'inline-source-map',
      module: {
        loaders: [
          {
             test: /\.js$/, 
             loader: 'babel-loader',  
             query: {
                  presets: ['airbnb']
             }
           }
        ]
      },

      externals: {
      'jsdom': 'window',
      'cheerio': 'window',
      'react/lib/ExecutionEnvironment': true,
      'react/addons': true,
      'react/lib/ReactContext': 'window'
      }
    }