2017-02-22 70 views
2

Все, что я хочу, это загрузить мои файлы машинописных файлов в отладчик браузера, когда я запускаю модульные тесты с помощью Karma. Если я удалю karma-typescript, тесты будут выполняться, но я могу только отлаживать переданный javascript. С карма-машинописью я получаю вышеуказанную ошибку. Что мне нужно сделать, чтобы отлаживать мои файлы машинописных файлов при использовании кармы?«Ошибка при отсутствии: зона уже загружена». во время теста кармы

Вот мой конфиг кармы, который используется для испытаний.

const conf = require('./gulp.conf'); 

module.exports = function (config) { 
const configuration = { 
basePath: '../', 
singleRun: false, 
autoWatch: true, 
logLevel: 'INFO', 
junitReporter: { 
    outputDir: 'test-reports' 
}, 
browsers: [ 
    'Chrome' 
], 
frameworks: [ 
    'jasmine', 
    'karma-typescript' 
], 
files: [ 
    { pattern: "src/**/*.ts" }, 
    conf.path.src('index.spec.js') 
], 
preprocessors: { 
    [conf.path.src('index.spec.js')]: [ 
    'webpack' 
    ], 
    "**/*.ts": ['karma-typescript'] 
}, 
reporters: ['progress', 'coverage', 'karma-typescript'], 
coverageReporter: { 
    type: 'html', 
    dir: 'coverage/' 
}, 
webpack: require('./webpack-test.conf'), 
webpackMiddleware: { 
    noInfo: true 
}, 
plugins: [ 
    require('karma-jasmine'), 
    require('karma-junit-reporter'), 
    require('karma-coverage'), 
    require('karma-chrome-launcher'), 
    require('karma-webpack'), 
    require('karma-typescript') 
] 
}; 

    config.set(configuration); 
}; 

Вот мой webpack conf, который используется для тестов.

const webpack = require('webpack'); 
const conf = require('./gulp.conf'); 
module.exports = { 
    module: { 
    loaders: [ 
     { 
     test: /.json$/, 
     loaders: [ 
      'json-loader' 
     ] 
     }, 
     { 
     test: /.ts$/, 
     exclude: /node_modules/, 
     loader: 'tslint-loader', 
     enforce: 'pre' 
     }, 
     { 
     test: /\.ts$/, 
     exclude: /node_modules/, 
     loaders: [ 
      'ts-loader' 
     ] 
     }, 
     { 
     test: /.html$/, 
     loaders: [ 
      'html-loader' 
     ] 
     } 
    ] 
    }, 
    plugins: [ 
    new webpack.ContextReplacementPlugin(
     /angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/, 
     conf.paths.src 
    ), 
    new webpack.LoaderOptionsPlugin({ 
     options: { 
     resolve: {}, 
     ts: { 
      configFileName: 'tsconfig.json' 
     }, 
     tslint: { 
      configuration: require('../tslint.json') 
     } 
     }, 
     debug: true 
    }), 
    new webpack.SourceMapDevToolPlugin({ 
     filename: null, 
     test: /\.(ts|js)($|\?)/i 
    }) 
    ], 
    devtool: 'source-map', 
    resolve: { 
    extensions: [ 
     '.webpack.js', 
     '.web.js', 
     '.js', 
     '.ts' 
    ] 
    } 
}; 

Вот мой webpack conf, который используется для запуска приложения.

Пожалуйста, дайте мне знать, какую еще информацию или код вы бы хотели.

+0

Я столкнулся с той же проблемой, которая пыталась перейти на @ angular/cli 1.0.0-rc.0 (from 1.0.0-beta.26) – eddygeek

ответ

5

В моем случае (переход на @ угловой/CLI 1.0.0-rc.0 от 1.0.0-beta.26) Я установил ее, удалив

import './polyfills.ts'; 

из src/test.ts, как теперь кажется, добавляется ng на основе "polyfills": "polyfills.ts" в angular-cli.json.

Это beta-> rc upgrade guide, в котором перечислены другие необходимые изменения.

+0

Точно такое же решение * просто * работало для меня. Спасибо. –

+0

Отмечено как ответ, потому что это побудило меня перестроить мой проект, используя угловой кли, а не Йоман, а затем тесты работали. – michaelAdam