Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何使用TranslateService依赖项对角度管道进行单元测试_Angular_Unit Testing_Testing_Pipe_Ngx Translate - Fatal编程技术网

Angular 如何使用TranslateService依赖项对角度管道进行单元测试

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 {

我有以下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 {
  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 所以我得到的是翻译标签,而不是翻译本身。如何使它与翻译一起工作