2017-06-29 1 views
0

の角度サービスのコンストラクタへのアクセスJestテストフレームワークを使用してIonic 3.4アプリケーションをテストし、コンストラクタがHttpオブジェクトとInAppBrowser Ionic Nativeプラグインオブジェクトを初期化する場所をテストするための角度サービスを呼び出す方法を理解できません。は、私はユニットだ...私は次のような答えを見つけるのに苦労しています(と私はそれが答えは比較的簡単である可能性が高い以上です賭ける)</p> <p>を冗談テストフレームワーク

マイpackage.jsonファイルには、以下の構成が含まれます。

... 
"jest": { 
    "transform": { 
     ".(ts|tsx)": "<rootDir>/node_modules/ts-jest/preprocessor.js" 
    }, 
    "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$", 
    "moduleFileExtensions": [ 
     "ts", 
     "tsx", 
     "js", 
     "json" 
    ] 
}, 
"devDependencies": { 
    "@types/jest": "^20.0.2", 
    "@types/node": "^7.0.31", 
    "jest": "^20.0.4", 
    "ts-jest": "^20.0.6", 
    "ts-node": "^3.0.6", 
    "tslint": "^5.4.3", 
    "tslint-eslint-rules": "^4.1.1", 
    "typescript": "2.3.3" 
}, 
... 

マイtsconfig.jsonファイルはsrc /ユニット・テストディレクトリにあるが(これだけのように、そのディレクトリを対象とし、その次のように内容はとイオンプロジェクトのルートtsconfig.jsonファイル)に干渉しない、次のとおりです。

{ 
    "compilerOptions" : { 
     "module"      : "commonjs", 
     "allowSyntheticDefaultImports" : true, 
     "experimentalDecorators"  : true, 
     "noImplicitAny"     : false, 
     "removeComments"    : false, 
     "locale"      : "en-GB", 
     "alwaysStrict"     : true, 
     "skipLibCheck"     : true, 
     "pretty"      : true 
    } 
} 

要求されたサービス - をプロバイダ/設定/ settings.ts - 次のとおりです。私はパラメータを取る場合

import 'reflect-metadata'; 
import { SettingsProvider } from '../providers/settings/settings'; 


let settings = null; 

beforeEach(() => { 
    // The following works IF the SettingsProvider class 
    // contains NO parameters in the constructor 
    settings = new SettingsProvider(); 
}); 



describe('Settings service',() => 
{ 
    // Tests are defined within here 
    // using methods supplied by the 
    // SettingsProvider class 
}); 

import { Injectable } from '@angular/core'; 
import { Http } from '@angular/http'; 
import { InAppBrowser } from '@ionic-native/in-app-browser'; 
import 'rxjs/add/operator/map'; 


@Injectable() 
export class SettingsProvider { 

constructor(public http  : Http, 
      private _INAPP : InAppBrowser) 
{ } 

// Methods follow here 
} 

。これはそのようにのようなsettings.test.tsファイル内で使用されていますSettingsProviderクラスコンストラクタのJestは、意図したとおりにテストを実行できます(合格または不合格)。次のエラーでテストスクリプトを実行しようとしたときに冗談チョークSettingsProviderクラスのコンストラクタ内部の代わりにパラメータを持つ

:冗談であるモジュールを認識するように

Test suite failed to run 

/ionic-unit/node_modules/@ionic-native/in-app-browser/index.js:20 
import { Injectable } from '@angular/core'; 
^^^^^^ 
SyntaxError: Unexpected token import 

    at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/ScriptTransformer.js:289:17) 
    at Object.<anonymous> (src/providers/settings/settings:12:21) 
    at Object.<anonymous> (src/unit-tests/settings.test.ts:2:18) 

どのように私は私のテストスクリプトを設定しますSettingsProviderコンストラクタで初期化されますか?

私は、開発者、私はどんな指導/助言に感謝ユニットテストでは比較的新しいだと(これまでに多くの喜びずに、あなたが言うことができるように、しかし!)これを実現する方法を理解しようとしている

問題があるかもしれない。

ありがとうございます!

答えて

0

私はまだJestを使用していません - 私は通常、ジャグミン/カルマを使用していますが、@ angularチームのデフォルトですが、Testbed to configure itを使用できませんか?貢献に感謝 -

beforeEach(async(() => { 
TestBed.configureTestingModule({ 
    providers: [ 
     Http, 
     InAppBrowser 
    ], 
}) 
})); 

beforeEach(async(() => TestUtils.beforeEachCompiler([]).then(compiled => { 
    fixture = compiled.fixture; 
    instance = compiled.instance; 
    fixture.autoDetectChanges(true); 

}))); 
+0

こんにちはクリスチャン:カルマ/ジャスミンと

、あなたはこのような何かを行うことができます。私は意図的にJestを使っていますが、Ionicプロジェクト内でそれを使用するための設定がかなり少ない/影響が少ない(他の設定/インストールを見て、比較の基礎を築くという複雑さ - イオン性)。私はJestの文脈の中でTestbedを使って調べていませんが、確かに調べることができます) – EinZweiDrei

関連する問題

 関連する問題