2016-08-25 75 views
0

我試圖運行角2組件測試 - RC5並正在以下錯誤,當我運行測試:角2 - 運行組件測試問題

Missing error handler on socket . TypeError: (msg || "").replace is not a function at /project/node_modules/karma/lib/reporter.js:48:23

我得出的結論是,當我註釋掉setBaseProviders行(以及組件測試中可能使用這些提供程序的行),測試套件的其餘部分運行時沒有問題。不幸的是,似乎我需要這些提供者才能使用TestComponentBuilder運行組件測試。

// other import statements above 
import { 
    TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS, 
    TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, 
} from '@angular/platform-browser-dynamic/testing'; 

setBaseTestProviders(TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, 
    TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS); 
// other code below that is currently commented out 

我記錄的錯誤消息從內部node_modules /因緣/ LIB/reporter.js:48和接收下列消息:「A平臺具有不同配置已創建。請先把它摧毀。'

下面是我的package.json文件和karma-conf.js。我也使用了angular2-CLI來設置初始倉庫。任何想法可能是什麼問題?請讓我知道是否有任何其他信息可以幫助您排除故障。

karma.conf

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'] 
     } 
    }, 
    files: [ 
     { 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: 'dist/vendor/zone.js/dist/async-test.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'], 
    singleRun: false 
    }); 
}; 

的package.json

{ 
    "name": "free-code-camp", 
    "version": "0.0.0", 
    "license": "MIT", 
    "angular-cli": {}, 
    "scripts": { 
    "start": "ng server", 
    "postinstall": "typings install", 
    "lint": "tslint \"src/**/*.ts\"", 
    "format": "clang-format -i -style=file --glob=src/**/*.ts", 
    "pree2e": "webdriver-manager update", 
    "e2e": "protractor" 
    }, 
    "private": true, 
    "dependencies": { 
    "@angular/common": "^2.0.0-rc.5", 
    "@angular/compiler": "^2.0.0-rc.5", 
    "@angular/core": "^2.0.0-rc.5", 
    "@angular/http": "^2.0.0-rc.5", 
    "@angular/platform-browser": "^2.0.0-rc.5", 
    "@angular/platform-browser-dynamic": "^2.0.0-rc.5", 
    "d3": "^4.2.2", 
    "es6-shim": "^0.35.0", 
    "reflect-metadata": "0.1.3", 
    "rxjs": "5.0.0-beta.6", 
    "systemjs": "0.19.31", 
    "zone.js": "^0.6.12" 
    }, 
    "devDependencies": { 
    "angular-cli": "0.0.*", 
    "clang-format": "^1.0.35", 
    "codelyzer": "0.0.14", 
    "ember-cli-inject-live-reload": "^1.4.0", 
    "jasmine-core": "^2.4.1", 
    "jasmine-spec-reporter": "^2.4.0", 
    "karma": "^0.13.15", 
    "karma-chrome-launcher": "^0.2.3", 
    "karma-jasmine": "^0.3.8", 
    "protractor": "^3.3.0", 
    "ts-node": "^0.5.5", 
    "tslint": "^3.6.0", 
    "typescript": "^1.8.10", 
    "typings": "^0.8.1" 
    } 
} 

回答

0

所以我很新的茉莉和因果報應,但我有同樣的錯誤:

A platform with a different configuration has been created. Please destroy it first.

這可能是因爲喲我在karma-test-shim.js文件中設置了基礎提供者。

如果這是你需要從單元測試消除這種情況:我想你只能設置基準提供商一次,所以誤差可能來自你的單元測試的其他地方

setBaseTestProviders(
    TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, 
    TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS); 

卡拉姆試驗shim.js應該是這樣的:

.. 
var testing = require('@angular/core/testing'); 
var browser = require('@angular/platform-browser-dynamic/testing'); 

testing.setBaseTestProviders(
    browser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, 
    browser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS 
); 
+1

在karma-test-shim.js中確實存在setBaseTestProviders行。從我的組件測試中刪除這個幫助我解決了這個問題。感謝您的幫助! –

1

我有一個類似的錯誤消息升級到角RC6,不得不更換

testing.setBaseTestProviders(
    browser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, 
    browser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS 
); 

testing.TestBed.initTestEnvironment(
    browser.BrowserDynamicTestingModule, 
    browser.platformBrowserDynamicTesting() 
); 

這被列爲RC.5 changelog中的重大更改。