【问题标题】:Read binary file with Karma-Jasmine使用 Karma-Jasmine 读取二进制文件
【发布时间】:2017-02-12 14:39:48
【问题描述】:

我正在开发一个测试平台,我想测试一个文件上传服务。 有什么方法可以读取二进制文件并将其附加到 FormData

var file = someModule.readFile('test-data/roof-top.tif');

var formData = new FormData();

formData.append('file',file, 'uploadedFile');

或者我应该构建一个静态文件服务器并执行一些 Ajax 调用来检索我的二进制文件?

【问题讨论】:

    标签: javascript node.js testing jasmine karma-jasmine


    【解决方案1】:

    您可以尝试将二进制数据编码为文本(base64 或字节数组)。然后,您可以将其作为 javascript 文件加载到浏览器中,就像加载任何其他测试数据一样。

    除此之外,设置文件服务器可能是要走的路。你实际上可以得到Karma to serve static files,你不需要自己设置服务器。

    【讨论】:

    • 非常感谢,这非常有帮助。我将业力配置为提供静态文件
    【解决方案2】:

    您需要节点的FileSystem 来读取文件,然后创建Blob 这是本机JS对象,然后将文件附加到FormData

    以下情况会导致类似情况:

    const fs = require('fs');
    var formData = new FormData();
    
    fs.readFile('test-data/roof-top.tif', function(err, data){
    
        var blob = new Blob(data);
        formData.append('file', blob, 'uploadedFile');
    
    });
    

    【讨论】:

    • 我不能在客户端测试代码中使用 fs,Jasmine 代码是在浏览器中执行的
    • 我以为你在 node.js 中这样做。如果没有用户选择要上传的文件,您将无法从 JS 脚本打开文件。
    • 我想我要创建一个简单的文件服务器,然后从 Ajax 响应中创建一些 Blob 对象
    猜你喜欢
    • 1970-01-01
    • 2021-12-04
    • 2019-04-13
    • 2020-11-11
    • 2012-09-11
    • 2019-09-25
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多