2016-04-15 9 views
2

すべてのラベルがもちろんローカライズされているコンポーネントをテストしようとしています。 私はテストを書くための最善の方法は依存関係を模倣することを知っていますが、この場合依存関係(そのうちの1つ)は私のテストで注入したいと思う翻訳サービスです。このサービスはアプリでブートストラップされているので、テストに注入することができました。コンポーネントテストでの翻訳サービス

翻訳-service.ts

import { Injectable } from 'angular2/core'; 
import { TranslateService } from 'ng2-translate'; 

@Injectable() 
export class TranslationService { 

    constructor(private _translate: TranslateService) { 
     // 
    } 

    instant(key: string) { 
     return this._translate.instant(key); 
    } 

    use(lang: string) { 
     this._translate.use(lang); 
    } 

...

と私のテスト:

describe('Login form',() => { 
    beforeEachProviders(() => [ 
     ROUTER_PROVIDERS, 
     HTTP_PROVIDERS, 
     provide(Router, { useClass: MockRouter }), 
     TranslateService, 
     TranslationService, 
     provide(LoginService, {useClass: MockLoginService}), 
     provide(TranslateLoader, { 
      useFactory: (http: Http) => new TranslateStaticLoader(http, 'assets/i18n', '.json'), 
      deps: [Http] 
     }), 
     ModuleLoaderService 
    ]); 

    it('should check translated labels', injectAsync([TestComponentBuilder], (tcb) => { 
     return tcb.createAsync(LoginComponent).then((fixture) => { 
      fixture.detectChanges(); 
      let compiled = fixture.debugElement.nativeElement; 
      console.log('cccccc', compiled); 
      expect(true).toBe(true); 
     }); 
    })); 
}); 

問題1:カルマ

http://localhost:9876/assets/i18n/en.jsonをロードするために、ロケールファイルを見つけることができませんリソースの読み込みに失敗しました:サーバは404のステータスで応答しました(見つからない)

問題2:そのファイルを読み込んでも、コンポーネントがこれらのラベルを取得するかどうかはわかりません。

私は彼女のいくつかのアイデアを見てきましたが、それらはすべて私が慣れていないAngular 1です(そしてAngular 2が新しくなりました)。

ありがとうございました!あなたの最初の質問については

答えて

0

カルマサーバは通常、前面に「ベース」プレフィックスを追加するための資産/ I18N "からロードする動作しないように私には思えます。

私は正しいパスは 'ベース/資産/ I18N' または 'ベース/ distfolder /資産/ i18nの' だろうと仮定し