Как помешать Карме показывать минимизированный код в отладке / ошибках? - PullRequest
0 голосов
/ 05 октября 2018

Я интегрировал Карму / Жасмин в свое приложение для Ionic, следуя этому блогу сообщение, рекомендованное официальным Примером ионного тестирования .

Это работает, но когда у меня естьошибка Карма показывает мне код в их минимизированной форме:

Error: StaticInjectorError(e)[e -> e]:
StaticInjectorError(Platform: core)[e -> e]:
NullInjectorError: No provider for e!

Как вы можете себе представить, иногда трудно понять, что такое "е".Есть ли способ изменить / настроить это?Я не нашел, где и в видео / сообщениях, которые я видел, это непосредственно в неуменьшенной форме.

Jus в случае, полная ошибка:

error properties: Object({ ngTempTokenPath: null, ngTokenPath: [ 'e', 
Function ] })
Error: StaticInjectorError(e)[e -> e]: 
  StaticInjectorError(Platform: core)[e -> e]: 
    NullInjectorError: No provider for e!
    at e.get (http://localhost:9876/base/test-config/karma-test-shim.js:45:135)
    at http://localhost:9876/base/test-config/karma-test-shim.js:52:2430
    at le (http://localhost:9876/base/test-config/karma-test-shim.js:52:2448)
    at e.get (http://localhost:9876/base/test-config/karma-test-shim.js:52:1612)
    at http://localhost:9876/base/test-config/karma-test-shim.js:52:2430
    at le (http://localhost:9876/base/test-config/karma-test-shim.js:52:2448)
    at e.get (http://localhost:9876/base/test-config/karma-test-shim.js:52:1612)
    at oi (http://localhost:9876/base/test-config/karma-test-shim.js:298:681)
    at http://localhost:9876/base/test-config/karma-test-shim.js:298:869
    at si (http://localhost:9876/base/test-config/karma-test-shim.js:298:1053)
    at oi (http://localhost:9876/base/test-config/karma-test-shim.js:298:639)
    at e.get (http://localhost:9876/base/test-config/karma-test-shim.js:313:9035)
    at e.get (http://localhost:9876/base/test-config/karma-test-shim.js:471:6725)
    at Function.e.get (http://localhost:9876/base/test-config/karma-test-shim.js:471:2525)
    at UserContext.<anonymous> (http://localhost:9876/base/test-config/karma-test-shim.js:702:99461)
    at e.invoke (http://localhost:9876/base/test-config/karma-test-shim.js:514:7001)
    at e.onInvoke (http://localhost:9876/base/test-config/karma-test-shim.js:618:2261)
    at e.invoke (http://localhost:9876/base/test-config/karma-test-shim.js:514:6941)
    at t.run (http://localhost:9876/base/test-config/karma-test-shim.js:514:2171)
    at l (http://localhost:9876/base/test-config/karma-test-shim.js:656:1318)
    at UserContext.<anonymous> (http://localhost:9876/base/test-config/karma-test-shim.js:656:1428)
    at <Jasmine>
    at e.invokeTask (http://localhost:9876/base/test-config/karma-test-shim.js:514:7685)
    at t.runTask (http://localhost:9876/base/test-config/karma-test-shim.js:514:2865)
    at m (http://localhost:9876/base/test-config/karma-test-shim.js:514:9934)

. /test-config / karma.conf.js

var webpackConfig = require('./webpack.test.js');

module.exports = function (config) {
    var _config = {
        basePath: '../',

        frameworks: ['jasmine'],

        files: [
            './test-config/ssd-refresh-debug.js',
            {
                pattern: './test-config/karma-test-shim.js',
                watched: true
            },
            {
                pattern: './src/assets/**/*',
                watched: false,
                included: false,
                served: true,
                nocache: false
            }
        ],

        proxies: {
            '/assets/': '/base/src/assets/'
        },

        preprocessors: {
            './test-config/karma-test-shim.js': ['webpack', 'sourcemap']
        },

        webpack: webpackConfig,

        webpackMiddleware: {
            stats: 'errors-only'
        },

        webpackServer: {
            noInfo: true
        },

        browserConsoleLogOptions: {
            level: 'log',
            format: '%b %T: %m',
            terminal: true
        },

        coverageIstanbulReporter: {
            reports: ['html', 'lcovonly'],
            fixWebpackSourcePaths: true
        },

        reporters: config.coverage ? ['kjhtml', 'dots', 'coverage-istanbul'] : ['kjhtml', 'dots'],
        port: 9876,
        colors: true,
        logLevel: config.LOG_INFO,
        autoWatch: true,
        browsers: ['Chrome'],
        singleRun: false,
    };

    config.set(_config);
};

. / test-config / webpack.test.js

var webpack = require('webpack');
var path = require('path');

module.exports = {
  devtool: 'inline-source-map',

  resolve: {
    extensions: ['.ts', '.js']
  },

  module: {
    rules: [{
        test: /\.ts$/,
        loaders: [{
          loader: 'ts-loader'
        }, 'angular2-template-loader']
      },
      {
        test: /.+\.ts$/,
        exclude: /(index.ts|mocks.ts|\.spec\.ts$)/,
        loader: 'istanbul-instrumenter-loader',
        enforce: 'post',
        query: {
          esModules: true
        }
      },
      {
        test: /\.html$/,
        loader: 'html-loader?attrs=false'
      },
      {
        test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
        loader: 'null-loader'
      }
    ]
  },

  plugins: [
    new webpack.ContextReplacementPlugin(
      // The (\\|\/) piece accounts for path separators in *nix and Windows
      /(ionic-angular)|(angular(\\|\/)core(\\|\/)@angular)/,
      root('./src'), // location of your src
      {} // a map of your routes
    )
  ]
};

function root(localPath) {
  return path.resolve(__dirname, localPath);
}

./test-config/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());

1 Ответ

0 голосов
/ 19 октября 2018

Мы столкнулись с очень похожей проблемой при выполнении наших тестов после обновления нашей версии веб-пакета.Мы исправили это, добавив следующее свойство в файл конфигурации webpack.test.js

mode:'development'
...