Я пробовал это несколькими разными способами, но теперь я получаю одну недетерминированную ошибку модульного теста за прогон. Есть ли с этим зависимость порядка или времени? Точное сообщение, которое я вижу:

ользую 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, а не переменная, как указано в ошибке. Разве Вавилон не должен поддержать это все же?

Кто-нибудь может помочь?

Ответы на вопрос(1)

Ваш ответ на вопрос