2
我試圖測試所有標籤當然都是本地化的組件。 我知道編寫測試的最好方法是模擬依賴關係,但在這種情況下,依賴關係(其中之一)是一種翻譯服務,我認爲我想在我的測試中注入(而不是模擬)。該服務在應用程序中引導,因此我設法將其注入到我的測試中。組件測試中的翻譯服務
翻譯,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的新成員。
感謝您的意見!