Angular 如何使用TranslateService依赖项对角度管道进行单元测试
我有以下byte-size.pipe,它依赖于ngx translate服务Angular 如何使用TranslateService依赖项对角度管道进行单元测试,angular,unit-testing,testing,pipe,ngx-translate,Angular,Unit Testing,Testing,Pipe,Ngx Translate,我有以下byte-size.pipe,它依赖于ngx translate服务 import { Pipe, PipeTransform } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; @Pipe({ name: 'byteSize', pure: false, }) export class ByteSizePipe implements PipeTransform {
import { Pipe, PipeTransform } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
@Pipe({
name: 'byteSize',
pure: false,
})
export class ByteSizePipe implements PipeTransform {
constructor(private translate: TranslateService) {}
transform(bytes: any, decimals?: any): any {
if (bytes === 0) {
const loc: any = this.translate.instant('size.Bytes');
return '0 ' + loc;
}
const k = 1024;
const dm = decimals || 2;
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
const i = Math.floor(Math.log(bytes) / Math.log(k));
const lang: any = this.translate.instant('size.' + sizes[i]);
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + lang;
}
}
到目前为止,我的测试结果如下:
import { TestBed, tick, fakeAsync, inject, async } from '@angular/core/testing';
import { ByteSizePipe } from './byte-size.pipe';
//Translation Dependecies
import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
import { HttpLoaderFactory } from '../app.module';
import { HttpClient } from '@angular/common/http';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { TranslateTestingModule } from 'ngx-translate-testing';
describe('ByteSizePipe', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
TranslateTestingModule.withTranslations({ en: require('../../assets/langs/en.json') }).withDefaultLanguage('en'),
HttpClientTestingModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient],
},
}),
],
providers: [TranslateService],
}).compileComponents();
}))
fit('Verify Byte Size transform', inject([TranslateService], async (translateService: TranslateService) => {
translateService.setDefaultLang('en');
let pipe = new ByteSizePipe(translateService);
expect(pipe.transform(1024)).toBe('1 KB');
}));
});
当我运行测试时-expect(pipe.transform(1024)).toBe('1kb')返回值为的false
1大小.KB
所以我得到的是翻译标签,而不是翻译本身。如何使它与翻译一起工作