Http 如何将文件加载到角度测试中?
我正在尝试使用Karma和Jasmine的最新版本测试扩展验证程序。我有一个接收文件并检查其扩展名和MIME类型的服务,这是方法签名:Http 如何将文件加载到角度测试中?,http,testing,angular8,Http,Testing,Angular8,我正在尝试使用Karma和Jasmine的最新版本测试扩展验证程序。我有一个接收文件并检查其扩展名和MIME类型的服务,这是方法签名: public validateFileType(file: File, validTypes: string[]): Observable<boolean> 公共validateFileType(文件:file,有效类型:string[]):可观察 正如您所看到的,该方法接收一个文件,因此我想加载/testing文件夹中的一些文件,或者创建一个扩
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();
});
});
});
});
这个测试之所以有效,是因为我创建的文件生成了一些我不使用的随机签名代码,因此无法识别,并且与预期类型不匹配,因此无法正常工作