2016-08-25 76 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中的重大更改。