【问题标题】:How to load test resources如何加载测试资源
【发布时间】:2020-08-13 17:03:30
【问题描述】:

我正在测试 Angular 9。我阅读了所有文档并创建了一个简单的网站,该网站需要解析一些用户可以拖放的文本文件。我有解析部分的服务,现在我正在尝试创建一些测试。我来自 Java,我通常做的是添加一些测试资源/文件以涵盖所有边缘情况并编写加载和解析这些测试资源的单元测试。我尝试使用 fs Node 模块读取这些文件,但是当我运行 ng test 时,我得到 Module not found: Error: Can't resolve 'fs'

我基本上只是希望能够将测试资源/文件加载到 File 实例中以将其传递给我正在测试的服务,有没有合适的方法来做到这一点?

【问题讨论】:

    标签: angular unit-testing angular-cli


    【解决方案1】:

    只需在您的项目中创建一个 .ts 文件并在其中添加内容,如下所示:

    数据.ts

    export const TestData = {
    // you can add your data here
    }
    

    并在您的 .spec.ts 文件中导入 data.ts 文件,如下所示

    import {TestData} from './data.ts';
    

    现在您可以使用 TestData 作为变量并将其发送到任何服务

    您可以将字符串数据存储在 .ts 文件中,并使用以下函数将字符串转换为二进制文件。

    readBinaryFile(base64: string, type: string, name: string) {
        const data = atob(base64);
        const array = new Uint8Array(data.length);
        for (let i = 0; i < data.length; i++) {
            array[i] = data.charCodeAt(i);
        }
        const file = new File([array], name, { type });
        return file;
    }
    

    【讨论】:

    • 我明白了,这就是我所拥有的。我说的是测试资产/资源。如何加载测试文件,比如我需要传递给 spec.ts 中的服务的测试 .csv?
    • 请检查更新,让我知道它是否适合您
    • 好的,谢谢。如果我在测试中需要一个二进制文件……比如说一个 PDF 文件来测试 PDF 解析服务怎么办?
    • 如果这对您有帮助,请将其标记为答案,以便其他人可以关注它,对于 PDF 解析,角度中没有内置功能,您可以使用外部包:find this url with the例如onthecode.co.uk/parse-pdf-documents-in-angular-with-pdfjs
    • 我知道 PDFjs……PDF 类型只是一个例子。我在问如何在我的单元测试中加载二进制测试文件/资产,这就是我在问题中提出的问题。在某些情况下,我可以使用您的解决方案,但我想知道是否有更通用的方法可以在单元测试中从文件(二进制而不是二进制)加载测试数据。
    猜你喜欢
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多