我正在为原生的离子问题设置Karma-Jasmine测试 . 我们正在使用Ionic3和Angular5 . 当运行测试测试(业力开始)时,我收到以下错误:
04 04 2018 09:41:06.152:ERROR [karma]:错误:找不到/Users/jackie.cygelman/WS/CRM-Mobile/src/app/app.component.spec.ts的来源! Typescript编译器选项和Karma配置之间是否存在不匹配?
Karma正确地找到了规范,但似乎打字稿版本没有正确编译?我在网上看到了相互矛盾的答案,特别是关于karma.conf.js中karmaTypescriptConfig的内容 . 任何有关不同编译选项的建议都将非常感谢!
tsconfig.js:
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"baseUrl": ".",
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"dom",
"es6"
],
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5"
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules",
"src/**/*.spec.ts",
"src/**/__tests__/*.ts"
],
"compileOnSave": false,
"atom": {
"rewriteTsconfig": false
}
}
karma.conf.js:
var webpackConfig = require('./webpack.test.js');
require('karma-jasmine-html-reporter');
module.exports = function(config) {
config.set( {
basePath: '../',
frameworks: ['jasmine','karma-typescript'],
plugins: [
'karma-webpack', 'karma-coverage', 'karma-jasmine', 'karma-jasmine-html-reporter', 'karma-typescript'
],
files: [
{
pattern: './test-config/karma-test-shim.js',
watched: true
},
{
pattern: './src/**/*.ts',
},
{
pattern: './src/assets/**/*',
watched: false,
included: false,
served: true,
nocache: false
}
],
proxies: {
'/assets/': '/base/src/assets/'
},
preprocessors: {
'./test-config/karma-test-shim.js': ['webpack'],
"**/*.ts": ["karma-typescript"]
},
webpack: webpackConfig,
webpackMiddleware: {
stats: 'errors-only'
},
webpackServer: {
noInfo: true
},
resolve: {
extensions: ['.js','.ts']
},
browserConsoleLogOptions: {
level: 'log',
format: '%b %T: %m',
terminal: true
},
coverageIstanbulReporter: {
reports: [ 'html', 'lcovonly' ],
fixWebpackSourcePaths: true
},
karmaTypescriptConfig: {
bundlerOptions: {
entrypoints: /\.spec\.ts$/,
transforms: [
require("karma-typescript-angular2-transform"),
require("karma-typescript-es6-transform")()
]
},
compilerOptions: {
"lib": [
"dom", "es6"
]
},
tsconfig: "./tsconfig.json"
},
reporters: config.coverage ? ['kjhtml', 'dots', 'coverage-istanbul'] : ['kjhtml','dots'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
singleRun: false
});
};
karma-test-shim.js:
Error.stackTraceLimit = Infinity;
require('core-js/es6');
require('core-js/es7/reflect');
require('zone.js/dist/zone');
require('zone.js/dist/long-stack-trace-zone');
require('zone.js/dist/proxy');
require('zone.js/dist/sync-test');
require('zone.js/dist/jasmine-patch');
require('zone.js/dist/async-test');
require('zone.js/dist/fake-async-test');
var appContext = require.context('../src', true, /\.spec\.ts/);
appContext.keys().forEach(appContext);
var testing = require('@angular/core/testing');
var browser = require('@angular/platform-browser-dynamic/testing');
testing.TestBed.initTestEnvironment(
browser.BrowserDynamicTestingModule,
browser.platformBrowserDynamicTesting());