Настройте phantomjs для работы с webpack и karma nwb

Я использую NWB для настройки приложения реагировать, я хотел бы использовать как chai а также enzyme настроить мою среду тестирования. Я сделал следующие изменения для достижения этой цели, я создал tests.webpack.js файл:

import chai from 'chai';
import chaiEnzyme from 'chai-enzyme';
import chaiAsPromised from 'chai-as-promised';
import sinonChai from 'sinon-chai';

chai.use(chaiEnzyme());
chai.use(chaiAsPromised);
chai.use(sinonChai);

const context = require.context('./src', true, /\.spec\.js/);
context.keys.forEach(context);

Я также изменил конфигурацию кармы в nwb.config.js:

const karmaChaiPlugins = require('karma-chai-plugins');

module.exports = {
  type: 'react-component',
  npm: {
    esModules: true,
    umd: {
      global: 'ReactMg',
      externals: {
        react: 'React',
      },
    },
  },
  karma: {
    testContext: 'tests.webpack.js',
    plugins: [
      karmaChaiPlugins,
    ],
    frameworks: ['mocha', 'chai', 'chai-as-promised'],
  },
  webpack: {
    compat: {
      enzyme: true,
      sinon: true,
    },
  },
};

Я получаю ошибку при запуске nwb test после определения index.spec.js в src:

PhantomJS 2.1.1 (Linux 0.0.0) ERROR
  TypeError: undefined is not a function (evaluating 'context.keys.forEach(context)')
  at tests.webpack.js:73
PhantomJS 2.1.1 (Linux 0.0.0): Executed 0 of 0 ERROR (0.375 secs / 0 secs)
Karma exit code was 1

1 ответ

Решение

Чтобы исправить ошибку TypeError: undefined не является функцией

Вы должны изменить context.keys.forEach(context); на context.keys().forEach(context); так как keys это функция [1]

[1] - https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

Другие вопросы по тегам