#jasmine #angular-cli #karma-jasmine #angular7 #angular-cli-v7
#jasmine #angular-cli #карма-jasmine #angular7 #angular-cli-v7
Вопрос:
Обновил angular с 5 до 7 после этого попытался запустить тест с помощью команды ng test и получил ошибку «спецификация не найдена», а Chrome 73.0.3683 (Linux 0.0.0): выполнил ОШИБКУ 0 из 0 (0,029 секунды / 0 секунд).
Кто-нибудь может мне помочь, как это исправить? я перепробовал все возможные сценарии, чтобы исправить это. На самом деле, когда я запускаю ng test, он должен найти мой файл spec.ts для запуска моих скриптов, но этого не происходит
моя версия cli:
Angular CLI: 7.3.9
Node: 8.16.0
OS: linux x64
Angular: 7.2.15
Package Version
@angular-devkit/architect 0.12.4
@angular-devkit/build-angular 0.12.4
@angular-devkit/build-optimizer 0.12.4
@angular-devkit/build-webpack 0.12.4
@angular-devkit/core 7.2.4
@angular-devkit/schematics 7.3.9
@angular/cdk 7.3.1
@angular/cli 7.3.9
@angular/flex-layout 7.0.0-beta.23
@angular/material 7.3.1
@ngtools/webpack 7.2.4
@schematics/angular 7.3.9
@schematics/update 0.13.9
rxjs 6.5.2
typescript 3.2.4
webpack 4.28.4
my karma.conf.js:
_ _ ____ _ ___
const tags = process.argv.filter(arg => {
return (arg.endsWith('.component') || arg.endsWith('.service'))
})
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-spec-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular-devkit/build-angular/plugins/karma'),
],
mime: {
'text/x-typescript': ['ts', 'tsx']
},
client: {
args: [tags],
clearContext: false // leave Jasmine Spec Runner output visible in browser!
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, 'coverage'),
reports: ['html', 'lcovonly'],
fixWebpackSourcePaths: true
},
// reporters: ['progress', 'kjhtml', 'spec'],
reporters: ['kjhtml', 'spec'],
port: 9876,
colors: true,
logLevel: config.LOG_DEBUG,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
captureTimeout: 240000,
browserDisconnectTimeout: 10000,
browserDisconnectTolerance: 3,
browserNoActivityTimeout: 60000,
});
};
**PS: removed files and the preprocessor configs from the karma.conf.js completely. This is all defined in the angular.json and should be handled automatically by the @anguler-devkit karma plugin**
test.ts:
_ _ ____ _ ___
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/zone-testing';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
declare var __karma__: any
declare var require: any
const tags = __karma__.config.args[0]
// Prevent Karma from running prematurely.
__karma__.loaded = function () { }
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
)
let filterRegex
if (tags.length) {
const strTags = tags.join('|')
filterRegex = new RegExp(`(${strTags})\.spec\.ts$`) // SPECIFIC TEST SUITES AS PASSED TO ... npm test filter-list.component filter-list.service
} else {
filterRegex = /.spec.ts$/ // ALL TEST SUITES
}
// filterRegex = /(filter-list.component|filter-list.service).spec.ts$/ // OR YOU CAN UNCOMMENT AND EDIT THIS LINE
const context = require.context('./', true, /.spec.ts$/)
const specFiles = context.keys().filter(path => filterRegex.test(path))
if (specFiles.length) {
specFiles.map(context)
__karma__.start()
} else {
console.warn(`Could not find any test suites for ${tags.join(', ')}`)
}
i expect the pass my all test which was working when i was using angular 5 but now i am getting "no spec found"
Ответ №1:
При переносе вам следует проверить файлы вашего старого приложения и сравнить их со свежим и недавно созданным приложением angular 7 с помощью ng new
.
Это на 100% вызвано какой-то неправильной конфигурацией, либо вызванной неправильным именем файла, либо неправильной схемой конфигурации. Больше не могу помочь без всех tsconfig.json
и angular.json
файлов.