Запуск Karma + WebPack + Jasmine.
karma.conf.js
var webpackConfig = require('./webpack.test');
module.exports = function (config) {
var _config = {
basePath: '../src',
frameworks: ['jasmine', 'stacktrace', 'es6-shim'],
files: [
{ pattern: "../config/base.spec.ts" },
],
preprocessors: {
'../config/base.spec.ts': ['webpack', 'sourcemap']
},
webpack: webpackConfig,
webpackMiddleware: {
logLevel: 'error'
},
webpackServer: {
noInfo: true
},
coverageReporter: {
type: 'in-memory'
},
remapCoverageReporter: {
'text-summary': null,
json: './.coverage/coverage.json',
html: './.coverage/html'
},
htmlDetailed: {
splitResults: false,
useHostedBootstrap: true,
dir: '../.reports',
refreshTimeout: 30000
},
reporters: ['progress', 'coverage', 'remap-coverage', 'htmlDetailed'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['PhantomJS'],
singleRun: false
};
config.set(_config);
};
base.spec.ts
import "core-js";
import "es6-shim";
import "zone.js/dist/zone";
import "zone.js/dist/long-stack-trace-zone";
import "zone.js/dist/proxy";
import "zone.js/dist/sync-test";
import "zone.js/dist/jasmine-patch";
import "zone.js/dist/async-test";
import "zone.js/dist/fake-async-test";
import { TestBed } from "@angular/core/testing";
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from "@angular/platform-browser-dynamic/testing";
// Hide stack traces
Error.stackTraceLimit = 0;
// Show stack traces
//Error.stackTraceLimit = Infinity;
TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
const context = require.context("../src", true, /\.spec\.ts$/);
context.keys().forEach(context);
Мой код TypeScript компилируется очень хорошо,Однако, когда я ссылаюсь на sinon в моем spec-файле, используя import * as sinon from 'sinon';
, я получаю следующую ошибку:
SyntaxError: Unexpected token '>'
at webpack:///node_modules/sinon/pkg/sinon-esm.js:21406 <- /Users/...
Эта строка содержит первую лямбда-функцию в этом файле.
Похоже, что Karma + WebPack не переносит код в ES5, а Phantom не нравится лямбда-функция.Как вы можете видеть, я загружаю es6-shim
в моем base.spec.js
и karma-es6-shim
в моей конфигурации кармы.
Как мне это исправить?