unit test node karma example javascript unit-testing reactjs requirejs karma-jasmine

javascript - test - Prueba de unidad de Karma: el nombre del módulo "reaccionar" no se ha cargado todavía para el contexto:_. El uso requiere([])



mocha test javascript (1)

El error que describes es exactamente lo que RequireJS te da cuando tienes una llamada obligatoria en el formulario CommonJS ( require(''modX'') ) en lugar del formulario AMD ( require([''modX''], function (modX) {...}) ), y la llamada se realiza sin estar envuelta en define . RequireJS proporciona algo de soporte para usar el formulario CommonJS, pero hay un mínimo de trabajo que debe realizar el desarrollador para garantizar que funcione. Un script que comience con esto no funcionará:

var modX = require(''modX''); // rest of the module

Obtienes el mensaje de error que recibiste. Necesitas esto en su lugar:

define(function (require) { var modX = require(''modX''); // rest of the module });

Lo que está pasando con su configuración es que, tal como está, Babel está transformando los módulos de ES6 en algo que utiliza require sin el contenedor de define . Para que Babel produzca los módulos de AMD adecuados, debe instalar babel-plugin-transform-es2015-modules-amd y agregar transform-es2015-modules-amd a su lista de complementos de Babel. Vea la documentación aquí .

Estoy tratando de configurar el marco de prueba de la unidad para reaccionar. Mientras lo hace, se produjo el siguiente error. He buscado en Internet sin ninguna solución que funcione. a continuación se muestran los errores y el código / paquetes que estoy usando.

error de depuración

04 03 2016 04:48:46.340:DEBUG [phantomjs.launcher]: Error: Module name "react" has not been loaded yet for context: _. Use require([]) http://requirejs.org/docs/errors.html#notloaded 04 03 2016 04:48:46.341:DEBUG [phantomjs.launcher]: http://localhost:9876/base/node_modules/requirejs/require.js?6f53c895855c3743ac6fb7f99afc63ca5cdfd300:140 in defaultOnError http://localhost:9876/base/node_modules/requirejs/require.js?6f53c895855c3743ac6fb7f99afc63ca5cdfd300:544 in onError http://localhost:9876/base/node_modules/requirejs/require.js?6f53c895855c3743ac6fb7f99afc63ca5cdfd300:1429 in localRequire http://localhost:9876/base/node_modules/requirejs/require.js?6f53c895855c3743ac6fb7f99afc63ca5cdfd300:1791 in requirejs PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR Error: Module name "react" has not been loaded yet for context: _. Use require([]) http://requirejs.org/docs/errors.html#notloaded at /Users/lebeier/Documents/iMARS/node_modules/requirejs/require.js:140 PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 0 of 0 ERROR (0.053 secs / 0 secs)

paquetes de nodos

"dependencies": { "bootstrap": "^3.3.6", "highcharts": "^4.2.1", "history": "^1.17.0", "jquery": "^2.2.0", "js-cookie": "^2.1.0", "react": "^0.14.6", "react-bootstrap": "^0.28.2", "react-bootstrap-table": "^1.4.5", "react-data-components": "^0.6.0", "react-dom": "^0.14.6", "react-highcharts": "^6.0.0", "react-notification-system": "^0.2.6", "react-router": "^1.0.3", "reactify": "^1.1.1", "toastr": "^2.1.2" }, "devDependencies": { "babel-core": "^6.6.4", "babel-loader": "^6.2.4", "babel-preset-es2015": "^6.3.13", "babel-preset-react": "^6.3.13", "babel-preset-stage-0": "^6.5.0", "babelify": "^7.2.0", "browserify": "^13.0.0", "core-js": "^2.1.3", "grunt-template-jasmine-requirejs": "^0.2.3", "jasmine": "^2.4.1", "karma": "^0.13.21", "karma-babel-preprocessor": "^6.0.1", "karma-browserify": "^5.0.2", "karma-cli": "^0.1.2", "karma-coverage": "^0.5.4", "karma-jasmine": "^0.3.7", "karma-phantomjs-launcher": "^1.0.0", "karma-requirejs": "^0.2.5", "karma-webpack": "^1.7.0", "node-sass": "^3.4.2", "phantomjs-prebuilt": "^2.1.4", "requirejs": "^2.1.22", "uglify": "^0.1.5", "watchify": "^3.7.0", "webpack": "^1.12.14" }

karma.conf.js

module.exports = function(config) { config.set({ // base path that will be used to resolve all patterns (eg. files, exclude) basePath: '''', // frameworks to use // available frameworks: https://npmjs.org/browse/keyword/karma-adapter frameworks: [''jasmine'', ''requirejs''], // list of files / patterns to load in the browser files: [ ''tests/*.js'' //{ pattern: ''tests.webpack.js'', watched: false }, ], // list of files to exclude //exclude: [ // ''./node_modules/'' //], plugins: [ ''karma-jasmine'', ''karma-requirejs'', ''karma-phantomjs-launcher'', ''karma-babel-preprocessor'', ''karma-coverage'', ''karma-browserify'', ''karma-webpack'' ], // preprocess matching files before serving them to the browser // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { ''core/static/core/js/*.js'' : [''babel''], ''tests/*.js'' : [''babel''], ''tests.webpack.js'': [ ''webpack''] }, babelPreprocessor:{ options: { presets: [''es2015'', ''react''], plugins: ["transform-object-rest-spread"], sourceMap: ''inline'' }, filename: function(file){ return file.originalPath.replace(//.js$/, ''.es5.js''); }, sourceFileName: function(file){ return file.originalPath; } }, // test results reporter to use // possible values: ''dots'', ''progress'' // available reporters: https://npmjs.org/browse/keyword/karma-reporter reporters: [''dots''], // web server port port: 9876, // enable / disable colors in the output (reporters and logs) colors: true, // level of logging // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG logLevel: config.LOG_DEBUG, // enable / disable watching file and executing tests whenever any file changes autoWatch: true, // start these browsers // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher browsers: [''PhantomJS''], // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: true, // Concurrency level // how many browser should be started simultaneous concurrency: Infinity, webpack: { devtool: ''inline-source-map'', modules: { loaders: [ { test: //.js$/, exclude: /node_modules/, loader: ''babel-loader'', query:{ presets: [''es2015'', ''react''] } } ], }, watch: true, }, webpackServer: { noInfo: true, } }) }

tests / test.js

import React from ''react''; import ReactDOM from ''react-dom''; describe(''Testing'', ()=>{ it(''sample test'', ()=>{ var v = 2; var parts = [''shoulders'', ''knees'']; var lyrics = [''head'', ...parts, ''and'', ''toes'']; expect(v).toEqual(2); }); });

¡La ayuda es muy apreciada!