2016-09-13 9 views
0

アップグレード後Angular2プロジェクトRC6に私のjasmineテストは動作を停止します。私はkarma.conf.jsを変更しようとしましたが、動作しません。私は何が欠けていますか?Angular2 rc6カルマ設定

karma.conf.js

// Karma configuration file, see link for more information 
// https://karma-runner.github.io/0.13/config/configuration-file.html 

module.exports = function (config) { 
    config.set({ 
    basePath: '..', 
    frameworks: ['jasmine'], 
    plugins: [ 
     require('karma-jasmine'), 
     require('karma-chrome-launcher') 
    ], 
    customLaunchers: { 
     // chrome setup for travis CI using chromium 
     Chrome_travis_ci: { 
     base: 'Chrome', 
     flags: ['--no-sandbox'] 
     }, 
     Chrome_without_security: { 
     base: 'Chrome', 
     flags: ['--disable-web-security'] 
     } 
    }, 
    files:[ 
     // System.js for module loading 
     'dist/vendor/systemjs/dist/system.src.js', 

     // Polyfills 
     'dist/vendor/core-js/client/shim.js', 

     // Reflect and Zone.js 
     'dist/vendor/reflect-metadata/Reflect.js', 
     'dist/vendor/zone.js/dist/zone.js', 
     'dist/vendor/zone.js/dist/long-stack-trace-zone.js', 
     'dist/vendor/zone.js/dist/proxy.js', 
     'dist/vendor/zone.js/dist/sync-test.js', 
     'dist/vendor/zone.js/dist/jasmine-patch.js', 
     'dist/vendor/zone.js/dist/async-test.js', 
     'dist/vendor/zone.js/dist/fake-async-test.js', 

     { pattern: 'dist/vendor/es6-shim/es6-shim.js', included: true, watched: false }, 
     { pattern: 'dist/vendor/zone.js/dist/zone.js', included: true, watched: false }, 
     { pattern: 'dist/vendor/reflect-metadata/Reflect.js', included: true, watched: false }, 
     { pattern: 'dist/vendor/systemjs/dist/system-polyfills.js', included: true, watched: false }, 
     { pattern: 'dist/vendor/systemjs/dist/system.src.js', included: true, watched: false }, 

     { pattern: 'config/karma-test-shim.js', included: true, watched: true }, 

     // Distribution folder. 
     { pattern: 'dist/**/*', included: false, watched: true } 
    ], 
    exclude: [ 
     // Vendor packages might include spec files. We don't want to use those. 
     'dist/vendor/**/*.spec.js' 
    ], 
    preprocessors: {}, 
    reporters: ['progress'], 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_INFO, 
    autoWatch: true, 
    browsers: ['Chrome', 'Chrome_without_security'], 
    singleRun: false 
    }); 
}; 

システム設定

// SystemJS configuration file, see links for more information 
// https://github.com/systemjs/systemjs 
// https://github.com/systemjs/systemjs/blob/master/docs/config-api.md 

/*********************************************************************************************** 
* User Configuration. 
**********************************************************************************************/ 
/** Map relative paths to URLs. */ 
const map: any = { 
    "ng2-charts": "vendor/ng2-charts", 
    'ng2-bs3-modal': 'vendor/ng2-bs3-modal', 
    "assets": "assets", 
}; 

/** User packages configuration. */ 
const packages: any = { 
    "ng2-charts": {main: 'ng2-charts.js'}, 
    "ng2-bs3-modal": {main: 'ng2-bs3-modal.js'}, 
    // Needed after angular2-rc.6 
    '@angular/core': {main: 'bundles/core.umd.js'}, 
    '@angular/common': {main: 'bundles/common.umd.js'}, 
    '@angular/compiler': {main: 'bundles/compiler.umd.js'}, 
    '@angular/forms': {main: 'bundles/forms.umd.js'}, 
    '@angular/http': {main: 'bundles/http.umd.js'}, 
    '@angular/platform-browser': {main: 'bundles/platform-browser.umd.js'}, 
    '@angular/platform-browser-dynamic': {main: 'bundles/platform-browser-dynamic.umd.js'}, 
    '@angular/router': {main: 'bundles/router.umd.js'} 
}; 

//////////////////////////////////////////////////////////////////////////////////////////////// 
/*********************************************************************************************** 
* Everything underneath this line is managed by the CLI. 
**********************************************************************************************/ 
const barrels: string[] = [ 
    // Angular specific barrels. 
    '@angular/core', 
    '@angular/common', 
    '@angular/compiler', 
    '@angular/forms', 
    '@angular/http', 
    '@angular/router', 
    '@angular/platform-browser', 
    '@angular/platform-browser-dynamic', 

    // Thirdparty barrels. 
    'rxjs', 

    // App specific barrels. 
    'app', 
    'app/shared', 
    'app/shared/navbar', 
    'app/shared/sidebar', 
    'app/shared/footer', 
    'app/dashboard', 
    'app/docs', 
    /** @cli-barrel */ 
]; 

const cliSystemConfigPackages: any = {}; 
barrels.forEach((barrelName: string) => { 
    cliSystemConfigPackages[barrelName] = { main: 'index' }; 
}); 

/** Type declaration for ambient System. */ 
declare var System: any; 

// Apply the CLI SystemJS configuration. 
System.config({ 
    map: { 
    '@angular': 'vendor/@angular', 
    'rxjs': 'vendor/rxjs', 
    'main': 'main.js', 
    }, 
    packages: cliSystemConfigPackages 
}); 

// Apply the user's configuration. 
System.config({ map, packages }); 

コンソール出力:

13 09 2016 10:26:30.221:INFO [karma]: Karma v0.13.22 server started at http://localhost:9876/ 
13 09 2016 10:26:30.234:INFO [launcher]: Starting browser Chrome 
13 09 2016 10:26:40.276:INFO [Chrome 52.0.2743 (Windows 7 0.0.0)]: Connected on socket /#oCu42Oxjq0zJ0shVAAAB with id 42186977 
13 09 2016 10:26:41.025:WARN [web-server]: 404: /base/dist/vendor/@angular/core/testing.js 
13 09 2016 10:26:41.029:WARN [web-server]: 404: /base/dist/vendor/@angular/platform-browser-dynamic/testing.js 
Missing error handler on `socket`. 
TypeError: (msg || "").replace is not a function 
    at C:\project\node_modules\karma\lib\reporter.js:45:23 
    at onBrowserError (C:project\node_modules\karma\lib\reporters\base.js:58:60) 
    at .<anonymous> (C:\project\node_modules\karma\lib\events.js:13:22) 
    at emitTwo (events.js:106:13) 
    at emit (events.js:191:7) 
    at onKarmaError (C:\project\node_modules\karma\lib\browser.js:95:13) 
    at Socket.<anonymous> (C:\project\node_modules\karma\lib\events.js:13:22) 
    at emitOne (events.js:101:20) 
    at Socket.emit (events.js:188:7) 
    at Socket.onevent (C:\project\node_modules\socket.io\lib\socket.js:335:8) 
    at Socket.onpacket (C:\project\node_modules\socket.io\lib\socket.js:295:12) 
    at Client.ondecoded (C:\project\node_modules\socket.io\lib\client.js:193:14) 
    at Decoder.Emitter.emit (C:\project\node_modules\component-emitter\index.js:134:20) 
    at Decoder.add (C:\project\node_modules\socket.io-parser\index.js:247:12) 
    at Client.ondata (C:\project\node_modules\socket.io\lib\client.js:175:18) 
    at emitOne (events.js:96:13) 
13 09 2016 10:26:43.044:WARN [Chrome 52.0.2743 (Windows 7 0.0.0)]: Disconnected (1 times) 

UPDATE

カルマ・テストshin.js

// Test shim for Karma, needed to load files via SystemJS 

/*global jasmine, __karma__, window*/ 
Error.stackTraceLimit = Infinity; 
jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000; 

__karma__.loaded = function() { 
}; 

var distPath = '/base/dist/'; 
var appPaths = ['app']; //Add all valid source code folders here 

function isJsFile(path) { 
    return path.slice(-3) == '.js'; 
} 

function isSpecFile(path) { 
    return path.slice(-8) == '.spec.js'; 
} 

function isAppFile(path) { 
    return isJsFile(path) && appPaths.some(function(appPath) { 
    var fullAppPath = distPath + appPath + '/'; 
    return path.substr(0, fullAppPath.length) == fullAppPath; 
    }); 
} 

var allSpecFiles = Object.keys(window.__karma__.files) 
    .filter(isSpecFile) 
    .filter(isAppFile); 

// Load our SystemJS configuration. 
System.config({ 
    baseURL: distPath 
}); 

System.import('system-config.js').then(function() { 
    // Load and configure the TestComponentBuilder. 
    return Promise.all([ 
    System.import('@angular/core/testing'), 
    System.import('@angular/platform-browser-dynamic/testing') 
    ]).then(function (providers) { 
    var testing = providers[0]; 
    var testingBrowser = providers[1]; 

    testing.setBaseTestProviders(testingBrowser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, 
     testingBrowser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS); 
    }); 
}).then(function() { 
    // Finally, load all spec files. 
    // This will run the tests directly. 
    return Promise.all(
    allSpecFiles.map(function (moduleName) { 
     return System.import(moduleName); 
    })); 
}).then(__karma__.start, __karma__.error); 

答えて

0

私はpackageConfigPathsは、以下の例のように、システムの設定に追加されたとき、同様の問題を解決:

packageConfigPaths: [ 
    '/node_modules/*/package.json', 
    '/node_modules/**/package.json', 
    '/node_modules/@angular/*/package.json', 
    '/node_modules/@angular2-material/*/package.json' 
    ]` 
+0

あなたのカルマを共有することができます設定? – ulou

関連する問題