【发布时间】:2016-04-15 15:24:43
【问题描述】:
我正在尝试测试一个所有标签当然都已本地化的组件。 我知道编写测试的最佳方法是模拟依赖项,但在这种情况下,依赖项(其中一个)是一种翻译服务,我想我想在我的测试中注入(而不是模拟)。该服务在应用程序中引导,因此我设法将其注入到我的测试中。
翻译服务.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);
});
}));
});
问题一:Karma 找不到要加载的语言环境文件
http://localhost:9876/assets/i18n/en.json资源加载失败:服务器响应状态为404(未找到)
问题 2:即使我会加载该文件,我也不确定我的组件是否会获得这些标签。
我在她(Stack)中看到了一些想法,但它们都是我不熟悉的 Angular 1(并且是 Angular 2 的新手)。
感谢您的任何意见!
【问题讨论】:
标签: angular karma-jasmine