Angular 如何在角度8单元测试中读取文本文件
我已经编写了angular 8应用程序,并计划编写单元测试。特别是我需要测试我开发的文件解析器Angular 如何在角度8单元测试中读取文本文件,angular,jasmine,Angular,Jasmine,我已经编写了angular 8应用程序,并计划编写单元测试。特别是我需要测试我开发的文件解析器 如何从单元测试中读取文本文件,这是我的黄金模型?假设: 你把茉莉花和因果报应结合起来了 要测试的方法是KicadReader#read(url:string,dataHandler:dataHandler),dataHandler是一些自定义的接口或类 您的测试文件是src/app/shared/services/reader/kicad/test.sch 这可以通过XMLHttpRequest实
如何从单元测试中读取文本文件,这是我的黄金模型?假设:
- 你把茉莉花和因果报应结合起来了李>
- 要测试的方法是
,KicadReader#read(url:string,dataHandler:dataHandler)
是一些自定义的dataHandler
或接口
类
- 您的测试文件是
src/app/shared/services/reader/kicad/test.sch
XMLHttpRequest
实现,如下所示:
it('#read should supply Kicad file content', (done) => {
// given
const filePath = 'src/app/shared/services/reader/kicad/test.sch';
const request: XMLHttpRequest = createRequest(filePath );
request.onload = r => {
const url = URL.createObjectURL(new Blob([request.response]));
// when
kicadReader.read(url, dataHandler);
};
dataHandler.onData = data => {
// then
expect(data).toBe('expected data');
done();
};
// trigger
request.send(null);
});
function createRequest(filePath: string): XMLHttpRequest {
const request = new XMLHttpRequest();
request.open('GET', 'base/' + filePath, true);
request.responseType = 'arraybuffer'; // maybe also 'text'
return request;
};
为了实现这一点,需要告诉Karma为测试文件提供服务(请参阅)。为此,请将以下内容添加到karma.config.js
:
files: [
{ pattern: 'src/app/shared/services/reader/kicad/test.sch', included: false, watched: false, served: true }
]
角度测试在浏览器中运行,浏览器中没有fs,如果需要从文件中获取数据,请导入JSON常量。请解释,我的文件不是JSON。请先发布你的文件。我的文件是kicad原理图文件,很大。我一回到计算机就发布了它。Angular是客户端框架,因此测试在浏览器环境中运行,而在浏览器环境中没有文件系统,因此您不能使用readFileSync from node,这是您在服务器中读取文件时使用的方法