2016-12-18 14 views
0

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

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: Undefine d не является функцией

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

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

+0

количество времени я провел по этому вопросу слишком высока, не знаю как я пропустил это. Спасибо @maksimr – vamsiampolu