Http 如何将文件加载到角度测试中?

Http 如何将文件加载到角度测试中?,http,testing,angular8,Http,Testing,Angular8,我正在尝试使用Karma和Jasmine的最新版本测试扩展验证程序。我有一个接收文件并检查其扩展名和MIME类型的服务,这是方法签名: public validateFileType(file: File, validTypes: string[]): Observable<boolean> 公共validateFileType(文件:file,有效类型:string[]):可观察 正如您所看到的,该方法接收一个文件,因此我想加载/testing文件夹中的一些文件,或者创建一个扩

我正在尝试使用Karma和Jasmine的最新版本测试扩展验证程序。我有一个接收文件并检查其扩展名和MIME类型的服务,这是方法签名:

public validateFileType(file: File, validTypes: string[]): Observable<boolean>
公共validateFileType(文件:file,有效类型:string[]):可观察 正如您所看到的,该方法接收一个文件,因此我想加载/testing文件夹中的一些文件,或者创建一个扩展名为“.doc'/'.xls'/'.pdf”的文件(我想使用第一种方法,已经尝试创建了一个.doc、.xls文件,并且签名号与任何实际文件都不匹配)。 但是它不可能加载任何文件,因为HttpClient不能在Karma测试中实例化,我已经尝试了我所知道的一切并搜索了很多,非常感谢您的帮助

范例

import { TestBed } from '@angular/core/testing';
import { FileValidatorService } from './file-validator.service';


describe('FileValidatorService', () => {
  let service: FileValidatorService;

  beforeEach(() => {
    TestBed.configureTestingModule({ providers: [FileValidatorService] });
    service = TestBed.get(FileValidatorService);
  });

  it('should be created', () => {
    expect(service).toBeTruthy();
  });

  describe('Types', () => {

    it('should be false', () => {
      const content = 'Hello test';
      const data = new Blob([content], { type: 'application/zip' });
      const arrayOfBlob = new Array<Blob>();
      arrayOfBlob.push(data);
      const applicationZip = new File(arrayOfBlob, 'Mock.zip', { type: 'application/zip' });
      service.validateFileType(applicationZip, ['.doc', '.xls']).subscribe((result: boolean) => {
        expect(result).toBeFalsy();
      });
    });
  });

});
从'@angular/core/testing'导入{TestBed};
从“./filevalidator.service”导入{FileValidatorService};
描述('FileValidatorService',()=>{
let服务:filevalidator服务;
在每个之前(()=>{
configureTestingModule({providers:[FileValidatorService]});
service=TestBed.get(FileValidatorService);
});
它('应该创建',()=>{
expect(service.toBeTruthy();
});
描述('类型',()=>{
它('应该是false',()=>{
const content='Hello test';
const data=new Blob([content],{type:'application/zip'});
const arrayOfBlob=新数组();
arrayOfBlob.push(数据);
const applicationZip=新文件(arrayOfBlob,'Mock.zip',{type:'application/zip'});
service.validateFileType(applicationZip、['.doc'、'.xls'])。订阅((结果:布尔值)=>{
expect(result.toBeFalsy();
});
});
});
});
这个测试之所以有效,是因为我创建的文件生成了一些我不使用的随机签名代码,因此无法识别,并且与预期类型不匹配,因此无法正常工作