Я использую Karma, Jasmine, Webpack и React и пытаюсь запустить тесты. Когда я запускаю их по отдельности, все работает нормально. Когда я пытаюсь запустить их как связку. Я не получаю никаких ошибок, он просто не находит тесты.
Если я посмотрю на результат require.context для каких-либо ключей, он ничего не найдет.
I ' я рассмотрел все вопросы, связанные с удаленным поиском, которые мог найти, но я не использую машинопись, я вообще не получаю ошибок, и когда я console.log указывает путь к файлу, который является рабочим каталогом для тестов, он находит его. Я также протестировал регулярное выражение в другом месте, и он может найти файлы, как указано. Я пытался установить точки останова внутри VSCode во время его работы, но ничего не останавливается.
Есть предложения, почему это может не работать?
У меня также есть репозиторий github с кодом, если кто-то захочет попробовать запустить его локально. Ссылка включает в себя ссылку на последний коммит, где я настроил его на использование связывания, как описано в Webpack .
Пример Github с Commit .
karma.conf. js
// Karma configuration
// Generated on Tue Mar 31 2020 09:49:24 GMT-0400 (Eastern Daylight Time)
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'],
// list of files / patterns to load in the browser
files: [
'spec/**/*.js'
// 'spec/tests.webpack.js' //Does not work
],
exclude: [
],
plugins: [
'karma-webpack',
'karma-jasmine',
'karma-sourcemap-loader',
'karma-chrome-launcher'
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'spec/**/*Spec.js': ['webpack'],
// 'spec/tests.webpack.js': ['webpack'], //Does not work
'src/**/*.js': ['webpack']
},
webpack: {
mode: 'development',
entry: './src/scripts/app.js',
module: {
rules: [{
test: /.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
}]
},
node: {
__dirname: true,
__filename: true
}
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['dots'],
port: 9876,
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_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Chrome'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false,
// Concurrency level
// how many browser should be started simultaneous
concurrency: Infinity
})
}
// Karma configuration
// Generated on Tue Mar 31 2020 09:49:24 GMT-0400 (Eastern Daylight Time)
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'],
// list of files / patterns to load in the browser
files: [
'spec/**/*.js'
// 'spec/tests.webpack.js' //Does not work
],
exclude: [
],
plugins: [
'karma-webpack',
'karma-jasmine',
'karma-sourcemap-loader',
'karma-chrome-launcher'
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'spec/**/*Spec.js': ['webpack'],
// 'spec/tests.webpack.js': ['webpack'], //Does not work
'src/**/*.js': ['webpack']
},
webpack: {
mode: 'development',
entry: './src/scripts/app.js',
module: {
rules: [{
test: /.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
}]
},
node: {
__dirname: true,
__filename: true
}
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['dots'],
port: 9876,
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_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Chrome'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false,
// Concurrency level
// how many browser should be started simultaneous
concurrency: Infinity
})
}
tests.webpack. js
const localContext = require.context('.', true, /Spec\.js$/);
localContext.keys().forEach(localContext);
пакет. json
{
"name": "react-training",
"version": "1.0.0",
"description": "",
"engines": {
"node": "8.11.2"
},
"main": ".\\src\\app.js",
"scripts": {
"build": "echo BUILD OK && exit 0",
"bundle": "webpack",
"lint": "eslint . --ext .js",
"lintfix": "eslint . --ext .js --fix",
"prebuild": "npm run versioncheck && npm run lint && npm run test && npm run bundle",
"start": "http-server dist",
"test": "karma start --singleRun",
"think": "echo \"Won't someone please think of the children!\" && exit 0",
"versioncheck": "node version-check.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.9.0",
"@babel/preset-env": "^7.9.0",
"@babel/preset-react": "^7.9.4",
"babel-loader": "^8.1.0",
"babel-plugin-transform-require-context": "^0.1.1",
"clean-webpack-plugin": "^3.0.0",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.2",
"eslint": "^6.8.0",
"eslint-plugin-react": "^7.19.0",
"html-webpack-plugin": "^4.0.3",
"http-server": "^0.12.1",
"jasmine": "^3.5.0",
"karma": "^4.4.1",
"karma-chrome-launcher": "^3.1.0",
"karma-commonjs": "^1.0.0",
"karma-jasmine": "^3.1.1",
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^4.0.2",
"semver": "^7.1.3",
"webpack": "^4.42.1",
"webpack-cli": "^3.3.11"
},
"dependencies": {
"commonjs": "0.0.1",
"prop-types": "^15.7.2",
"react": "^16.13.1",
"react-dom": "^16.13.1"
}
}
PollHeaderSpe c. js
import React from 'react';
import TestUtils from 'react-dom/test-utils';
import PollHeader from '../src/components/PollHeader.js';
describe('PollHeader', function () {
var component;
beforeEach(function () {
component = TestUtils.renderIntoDocument(
<PollHeader text="Welcome to the Poll!" />
)
});
it('renders without problems', () => {
expect(component).toEqual(jasmine.anything());
});
it('prints a message', function () {
var actual = TestUtils.findRenderedDOMComponentWithTag(component, 'h1').textContent;
var expected = 'Welcome to the Poll!';
expect(actual).toEqual(expected);
});
});
Дерево папок
?my-first-node
┣ ?dist
┃ ┣ ?scripts
┃ ┃ ┣ ?app.js
┃ ┃ ┗ ?app.js.map
┃ ┗ ?index.html
┣ ?spec
┃ ┣ ?support
┃ ┃ ┗ ?jasmine.json
┃ ┣ ?PollAnswerSpec.js
┃ ┣ ?PollContainerSpec.js
┃ ┣ ?PollHeaderSpec.js
┃ ┣ ?PollQuestionSpec.js
┃ ┣ ?PollSubmitButtonSpec.js
┃ ┣ ?SayHelloSpec.js
┃ ┗ ?tests.webpack.js
┣ ?src
┃ ┣ ?components
┃ ┃ ┣ ?PollAnswer.js
┃ ┃ ┣ ?PollHeader.js
┃ ┃ ┣ ?PollQuestion.js
┃ ┃ ┗ ?PollSubmitButton.js
┃ ┣ ?containers
┃ ┃ ┗ ?PollContainer.js
┃ ┣ ?scripts
┃ ┃ ┣ ?app.js
┃ ┃ ┗ ?SayHello.js
┃ ┗ ?index.html
┣ ?.babelrc
┣ ?.eslintignore
┣ ?.eslintrc.js
┣ ?.npmrc
┣ ?karma.conf.js
┣ ?nodetest.js
┣ ?package-lock.json
┣ ?package.json
┣ ?version-check.js
┗ ?webpack.config.js