2016-12-02 7 views
2

thisの記事でいくつかのテストシステムを設定しようとしています。それは多かれ少なかれ理解できますが、私は現在解決できないエラーがあります。カルマ+ジャスミン+アンギュラ2+ウェブパック:coreTesting.setBaseTestProvidersは関数ではありません

マイkarma.entry.js

エラーに "NPMテスト" の結果を実行
require('es6-shim'); 
require('reflect-metadata'); 
require('zone.js/dist/zone'); 
require('zone.js/dist/long-stack-trace-zone'); 
require('zone.js/dist/jasmine-patch'); 
require('zone.js/dist/async-test'); 
require('zone.js/dist/fake-async-test'); 
require('zone.js/dist/sync-test'); 


const browserTesting = require('@angular/platform-browser-dynamic/testing'); 
const coreTesting = require('@angular/core/testing'); 


coreTesting.setBaseTestProviders(
    browserTesting.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, 
    browserTesting.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS 
); 

const context = require.context('..\\srs\\', true, /\.spec\.ts$/); 
context.keys().forEach(context); 
Error.stackTraceLimit = Infinity; 
jasmine.DEFAULT_TIMEOUT_INTERVAL = 2000; 

Uncaught TypeError: coreTesting.setBaseTestProviders is not a function 
at webpack:///karma/karma.entry.js:15:0 <- karma.entry.js:61 

限り私は推測することができますよう、require('@angular/core/testing');は私が必要とするオブジェクトを返しません。私はここで似たような話題を見たことがあるが、これまでのところ何も動かない 私は、どこかの依存関係が見当たりませんが、正確にどこを特定できるのかを理解しています。

マイkarma.conf.js

'use strict'; 

module.exports = (config) => { 
config.set({ 
    autoWatch: true, 
    browsers: ['Chrome'], 
    files: [ 
     '../node_modules/es6-shim/es6-shim.min.js', 
     'karma.entry.js' 
    ], 
    frameworks: ['jasmine'], 
    logLevel: config.LOG_INFO, 
    phantomJsLauncher: { 
     exitOnResourceError: true 
    }, 
    preprocessors: { 
     'karma.entry.js': ['webpack', 'sourcemap'] 
    }, 
    reporters: ['dots'], 
    singleRun: false, 
    webpack: require('..\\webpack\\webpack.test'), 
    webpackServer: { 
     noInfo: true 
    } 
}); 
}; 

package.jsonは、すべての必要な依存関係があるようです:

{ 
... 
    "dependencies": { 
    "@angular/common": "^2.2.4", 
    "@angular/compiler": "^2.2.4", 
    "@angular/core": "^2.2.4", 
    "@angular/forms": "^2.2.4", 
    "@angular/http": "^2.2.4", 
    "@angular/platform-browser": "^2.2.4", 
    "@angular/platform-browser-dynamic": "^2.2.4", 
    "@angular/router": "^3.2.4", 
    "es6-shim": "^0.35.1", 
    "reflect-metadata": "^0.1.8", 
    "rxjs": "^5.0.0-beta.12", 
    "zone.js": "^0.6.12" 
    }, 
    "devDependencies": { 
    "@types/core-js": "^0.9.35", 
    "html-webpack-plugin": "^2.24.1", 
    "jasmine-core": "^2.5.2", 
    "karma": "^1.3.0", 
    "karma-chrome-launcher": "^2.0.0", 
    "karma-jasmine": "^1.0.2", 
    "karma-phantomjs-launcher": "^1.0.2", 
    "karma-sourcemap-loader": "^0.3.7", 
    "karma-webpack": "^1.8.0", 
    "phantomjs-prebuilt": "^2.1.13", 
    "raw-loader": "^0.5.1", 
    "ts-loader": "^1.2.2", 
    "tslint": "^4.0.2", 
    "tslint-loader": "^3.2.1", 
    "typescript": "^2.0.10", 
    "typings": "^2.0.0", 
    "webpack": "^1.13.3", 
    "webpack-dev-server": "^1.16.2" 
    } 
} 

を正確に私は全部を誤って設定しているところ誰かが親切にお知らせくださいもらえますか?

+0

Changelog 2.0.0-rc.5(2016-08-09)を見たことがありますか? https://github.com/angular/angular/blob/aa4bd14b3f3ddc7a08192589a9bb3931edf426e9/CHANGELOG.md#200-rc5-2016-08-09 'setBaseTestProvidersは廃止され、Angularで事前定義されたplatformProvidersのみがサポートされています。代わりに 'TestBed.initTestEnvironment'を使用してください。 – yurzui

+0

thnx。ただ見つけた –

答えて

2

テストAPIが複数回変更されました。テストエントリファイルの現在のバージョンは、リポジトリlinked from this articleで利用できます。

基本的に、今削除するsetBaseTestProvidersメソッドを直接呼び出すのではなく、core/testingモジュールから公開されたTestBedクラスを使用するのが基本です。

... 
coreTesting.TestBed.resetTestEnvironment(); 
coreTesting.TestBed.initTestEnvironment(
    browserTesting.BrowserDynamicTestingModule, 
    browserTesting.platformBrowserDynamicTesting() 
); 

TestBedは、テスト環境の要件を扱うクラスです。詳しくは、Angular's documentationをご覧ください。

0

実際、私は廃止予定のメソッドを使用しています。

関連する問題