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实

我已经编写了angular 8应用程序,并计划编写单元测试。特别是我需要测试我开发的文件解析器


如何从单元测试中读取文本文件,这是我的黄金模型?

假设:

  • 你把茉莉花和因果报应结合起来了
  • 要测试的方法是
    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,这是您在服务器中读取文件时使用的方法