Я пробовал это несколькими разными способами, но теперь я получаю одну недетерминированную ошибку модульного теста за прогон. Есть ли с этим зависимость порядка или времени? Точное сообщение, которое я вижу:
ользую Angular 4, Webpack 2.4.1, Karma 1.6 и Jasmine 2.6.1 и пишу ES2015не Машинопись
У меня есть крошечное угловое демо-приложение, и я хочу добавить юнит-тесты. Само демонстрационное приложение работает, и Webpack правильно связывает все, но когда я пытаюсь запустить модульные тесты, я вижу некоторые ошибки в консоли, например:
ReferenceError: Невозможно найти переменную: Map
в Static / js / app.welcome.js: 2569
(app.welcome.js это имя моего компонента)
Кажется, Webpack правильно собирает мой тестовый пакет, сервер Karma запускается правильно и PhantomJS запускается правильно, но затем я вижу несколько ошибок Map.
яопределенно не используяMap()
конструктор в моем собственном коде.
Вот мои файлы -
app.welcome.js:
import {Component} from '@angular/core';
class WelcomeComponent {
constructor () {
this.welcomeMessage = 'Welcome to Angular 4';
}
}
WelcomeComponent.annotations = [
new Component({
selector: 'my-app',
template: '<h1>{{welcomeMessage}}</h1>'
})
];
export {WelcomeComponent};
app.welcome.spec.js:
import {TestBed} from '@angular/core/testing';
import {WelcomeComponent} from '../../js/app.welcome';
describe('The Welcome component', function () {
let component;
beforeEach(function() {
TestBed.configureTestingModule({
declarations: [WelcomeComponent]
});
const fixture = TestBed.createComponent(WelcomeComponent);
component = fixture.componentInstance;
});
it('should be a component', function() {
expect(component).toBeDefined();
});
it('should have a welcome message', function () {
expect(component.welcomeMessage).toEqual('Welcome to Angular 4');
});
});
karma.conf.js:
const webpack = require('webpack');
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'./Static/js/**/*.js',
'./Static/test/**/*.spec.js'
],
exclude: [
'./Static/js/main.js'
],
preprocessors: {
'./Static/js/**/*.js': ['webpack'],
'./Static/test/**/*.spec.js': ['webpack']
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['PhantomJS'],
singleRun: true,
concurrency: Infinity,
webpack: {
module: {
rules: [{
test: /\.js$/,
use: [{
loader: 'babel-loader',
options: { presets: ['es2015'] }
}]
}]
},
plugins: [
new webpack.ContextReplacementPlugin(/angular(\\|\/)core(\\|\/)@angular/, './src')
]
}
})
}
Я попытался добавить импорт в мой тестовый файл, какimport 'zone.js';
а такжеimport 'core-js/es6';
Прочитав здесь другие ответы, но это не помогло.
Я просмотрелаТестирование -ts - РУКОВОДСТВО и я, кажется, не пропускаю ничего огромного из предыдущих базовых примеров, но проблема в том, что все официальные документы ориентированы на TypeScript, а я хочу использовать ES2015.
Я понимаю, что Map - это новый тип объекта в ES2015, а не переменная, как указано в ошибке. Разве Вавилон не должен поддержать это все же?
Кто-нибудь может помочь?