在 Node.js 服务器上使用 supertest/superagent 读取响应输出缓冲区/流

2024-01-02

我正在尝试编写一个测试来检查 API 路由是否输出内容正确的 ZIP 文件。

我正在使用 mocha 和 supertest 进行测试,我想实际读取输出流/缓冲区,读取 zip 文件内容并查看内容是否正确。

有什么想法我应该怎么做?当我尝试阅读时res.body,它只是一个空对象。

  request(app)
    .get( "/api/v1/orders/download?id[]=1&id=2" )
    .set( "Authorization", authData )
    .expect( 200 )
    .expect( 'Content-Type', /application\/zip/ )
    .end( function (err, res) {
      if (err) return done( err );

      console.log( 'body:', res.body )

      // Write the temp HTML file to filesystem using utf-8 encoding
      var zip = new AdmZip( res.body );
      var zipEntries = zip.getEntries();

      console.log( 'zipentries:', zipEntries );

      zipEntries.forEach(function(zipEntry) {
        console.log(zipEntry.toString()); // outputs zip entries information
      });

      done();
    });

扩展@Beau的答案,以下内容可用于获取任何二进制响应内容作为缓冲区,您可以在其中进一步检查request.end():

function binaryParser(res, callback) {
    res.setEncoding('binary');
    res.data = '';
    res.on('data', function (chunk) {
        res.data += chunk;
    });
    res.on('end', function () {
        callback(null, new Buffer(res.data, 'binary'));
    });
}

// example mocha test
it('my test', function(done) {
    request(app)
        .get('/path/to/image.png')
        .expect(200)
        .expect('Content-Type', 'image.png')
        .buffer()
        .parse(binaryParser)
        .end(function(err, res) {
            if (err) return done(err);

            // binary response data is in res.body as a buffer
            assert.ok(Buffer.isBuffer(res.body));
            console.log("res=", res.body);

            done();
        });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Node.js 服务器上使用 supertest/superagent 读取响应输出缓冲区/流 的相关文章

  • 使用nodejs的sequelize更新多对多连接表

    我有一个产品表和一个类别表 一个产品可以有多个类别 一个类别可以有多个产品 因此我有一个 ProductsCategories 表来处理多对多连接 在下面的示例中 我尝试将我的一款产品 ID 为 1 与 3 个不同的类别 ID 为 1 2
  • 当rest api应用程序服务器(express)和Angulars js应用程序在不同端口上运行时出现Cors问题

    我有用node js编写的rest api应用程序 express在端口3000上运行 而angularjs应用程序在同一服务器上的端口9001上运行 从 angularjs 应用程序调用 rst api 时 出现了 cors 问题 在re
  • 节点未找到全局模块

    所以我意识到这是一个相当通用的标题和问题 但我已经搜索了很多答案 但遗憾的是它们似乎都不适合我 我希望通过我自己提供更多信息 也许有人有一个具体的答案 或者确切地知道将我重定向到哪个答案 我的问题 当我全局安装节点模块时 例如npm ins
  • .doc 格式如何工作?

    我最近了解了 docx 文件的基本结构 它是一个特殊结构的 zip 存档 但是 docx 的格式与 doc 不同 doc 文件如何工作 文件格式 结构等是什么 这不是对你的问题的直接回答 但我强烈建议阅读 Joel Spolsky 的文章
  • 如何将sinon间谍模块导出实用函数

    在 javascript ES6 中 我有一个实用程序模块 其中只包含一些函数 然后在文件末尾 我像这样导出它们 module exports someFunction1 someFunction2 someFunction3 然后我想为这
  • 将 JS 库 xml2js 与 Angular 2 结合使用

    我正在尝试在 Angular 2 带有 TypeScript 的 RC 1 Web 应用程序中使用 xml2js 作为 XML 解析器 但是我只收到一些错误并且没有有效的解决方案 这是我一步一步所做的 通过安装 xml2jsnpm inst
  • 节点的heroku:! Heroku 推送被拒绝,未检测到 Cedar 支持的应用程序

    我是 heroku 和express js 的新手 我尝试完成本教程 但无法通过 git push heroku master 步骤完成 我完全按照教程进行操作 以下是错误消息 Counting objects 269 done Delta
  • 使用 Karma 运行的 Mocha 单元测试 - did() 未定义

    我正在尝试使用 Mocha 编写的测试来运行 Karma 它们确实可以工作 但我无法使用 did 方法来实现异步测试 这本质上使这些工具对我来说毫无用处 我缺少什么 karma conf js module exports function
  • ExpressJS & Websocket & 会话共享

    我正在尝试制作一个基于 Node js 的聊天应用程序 我想强制 websocket 服务器 ws 库 使用 ExpressJS 会话系统 不幸的是 我被困住了 用于获取会话数据的 MemoryStore 哈希值与 cookie 中的会话
  • Node.js Google-云存储上传目的地规范

    我有一个 Node js 服务器并且正在使用谷歌云上传一些图像文件的包Firebase 存储 上传本身工作正常 但 google cloud API 似乎只能将文件上传到 Firebase Storage 根文件夹 有没有办法指定远程位置来
  • Apollo 服务器:将参数传递给嵌套解析器

    我的 GraphQL 查询如下所示 p1 property someArgs some value id nestedField id moreNestedField id 在服务器端 我使用 Apollo Server 我有一个解析器pr
  • 如何使用 jest 测试 unhandledRejection / uncaughtException 处理程序

    我有处理程序unhandledRejections and uncaughtExceptions bin js unhandledRejection uncaughtException forEach event gt process on
  • 如何在 Mongoose.js 查询中执行大于语法

    如何获得适用于此 Mongoose 查询的 大于 语法 var where where id req wine id where sameAs undefined where scoreTotal gt 0 THIS NEEDS TO SE
  • 跳过测试文件 Jest 中的一项测试

    我正在使用 Jest 框架并有一个测试套件 我想关闭 跳过其中一项测试 谷歌搜索文档没有给我答案 您知道答案或需要检查的信息来源吗 我在这里找到了答案 https devhints io jest https devhints io jes
  • Mongoose:保存时根据父字段值设置子文档字段值

    这几乎肯定在其他地方有所涉及 但是 如果我有一个带有嵌入子文档的单一架构 如下所示 var ChildSchema new Schema name type String trim true user type String trim tr
  • 在不调用“then”的情况下解决 Promise

    我有这段代码 它是我为一个名为 Poolio 的 NPM 模块编写的小型 API 的一部分 对于那些支持错误优先回调和承诺的人来说 我遇到的问题似乎是一个常见问题 我们如何在支持两者的同时保持一致的 API 和 API 的一致返回值 例如
  • 我可以使用 lambda 调用将路径参数传递给另一个 lambda 函数吗?

    我正在尝试使用 lambda 调用来调用另一个 lambda 函数并获取响应 问题是其他 lambda 函数需要将 id 作为路径参数 或作为查询字符串 发送 但我在 lambda 调用中没有看到此选项 如果我在有效负载中传递 id 其他函
  • 强大的上传不起作用:“文件”未定义,没有错误

    我正在尝试使用 formidable 上传文件 按照中的教程进行操作节点入门书 http www nodebeginner org 按照这段代码 我有一个服务器模块 它通过requestrequestHandler 模块的对象 主页加载带有
  • Node Red 不会自动加载流

    我已经在我的 raspberry pi 上成功安装了nodered 但问题是每次我编写流程时 我都必须将流程保存到flows raspberrypi json中并重新启动nodered服务器 如何让它自动保存节点 2 可能的事情 1 如果您
  • 如何正确关闭 Node.js Express 服务器?

    我需要在收到回调后关闭服务器 auth github callback网址 与平常一样HTTP API http nodejs org docs latest api http html关闭 服务器目前支持server close call

随机推荐

  • Environment.SpecialFolder.ApplicationData 返回错误的文件夹

    我有一个奇怪的问题 我的 NET 4 0 WPF 应用程序正在将数据保存到 ApplicationData 文件夹 Environment GetFolderPath Environment SpecialFolder Applicatio
  • Log4J Swing Appender

    我需要将 log4j 内容附加到 Swing 组件 JTextArea 或类似组件 有一个通用的方法可以做到这一点吗 我最终没有引入外部库 而是编辑 log4j properties 文件以包含以下内容 log4j rootCategory
  • 对 HttpModule 中的事件进行单元测试

    我的应用程序中有一个 CustomHttp 模块 用于删除不需要的响应标头 如下所示 public class RemoveServerHeadersModule IHttpModule public void Init HttpAppli
  • 函数调用超时

    我正在 Python 中调用一个函数 我知道该函数可能会停止并迫使我重新启动脚本 如何调用该函数或者将其包装在什么中 以便如果花费时间超过 5 秒 脚本就会取消该函数并执行其他操作 您可以使用signal http docs python
  • 在Visual Studio中调试Qt,缺少msvcp140d_app.dll

    我是新来的Qt 但一直在与视觉工作室 for C C 发展了几年 现在我正在尝试建立一个GUI对于我的项目 我安装了Qt 5 11 0和Qt我的工作计算机和家庭 PC 上都有 VS Tools 在工作中 我可以使用 VS 调试器构建和运行我
  • 删除重复项及其内在价值[重复]

    这个问题在这里已经有答案了 假设下一个向量 just a random vector lt c A B B C C D 这个想法是 如果某个值有重复项 则删除所有重复值和该值本身 为了得到看起来像这样的东西 A D 有什么办法可以得到上面的
  • D3.js 醉酒工具提示

    D3 js 能够支持醉酒提示吗 如果可能的话 有人可以给我举个例子吗 谢谢 这是一个工作示例 使用 jQuery Tipsy 的 D3 工具提示 http bl ocks org 1373263
  • 像 @Override 这样的注释在 Java 内部是如何工作的?

    谁能向我解释一下 java 内部注释是如何工作的 我知道如何使用 java 中的 java lang annotation 库创建自定义注释 但我仍然不明白它的内部工作原理 例如 Override 注释 如果有人能详细解释这一点 我将非常感
  • 将图像源设置为 URI

    如果我有一个在线图像的链接 并且我想将图像源设置为此 uri 我应该如何做最好 我正在尝试的代码如下所示
  • 一段时间后更改文档中的变量值?

    我对网络开发很陌生 我想学习新东西 我有一个猫鼬模式 我不会发布它 因为它是用我自己的语言写的 你不会理解 所以我会解释 所以我有诸如名称 代码 创建条目的用户等信息 与我的问题无关 我有一个变量 比如说日期 如下所示 type Date
  • 使用 numpy 在 Python 中导入 nastran 节点套牌

    如果我想将 Nastran Deck 导入到 Python 数组中 可以使用 numpy 一次性完成 我该怎么办呢 我哪里错了 我有一个仅包含网格的文件 网格均与 Nastran 的短翻译器等距 8 个字符 MH Nodes 2345678
  • Jquery从左到右的动画宽度

    我正在尝试对菜单元素进行动画处理 在鼠标悬停时将宽度从 170 像素缩小到 150 像素 我的问题是 默认的 animate 收缩发生在矩形的右侧 我需要它在左侧收缩 我已经尝试过对左边距进行动画处理 但由于元素内部有文本 因此它在动画过程
  • log4j2 中增强的 Throwable 渲染器

    log4j2 中是否存在与增强型 Throwable Renderer 类 存在于 log4j1 中 等效的类 我正在将一个库迁移到 log4j2 但我没有看到 log4j2 支持此功能 任何帮助表示赞赏 在 log4j2 中 图案布局 h
  • 加载多个属性文件

    Java 中是否可以堆叠加载的属性 例如我可以这样做 Properties properties new Properties properties load new FileInputStream file1 properties pro
  • .NET mvc3 验证最小长度,但不是必需的

    我目前正在使用 MVC 数据注释对我的模型执行验证 MinLength 4 ErrorMessage The 0 must be at least 2 characters long MaxLength 16 ErrorMessage Th
  • 使用 ASP.NET MVC 的多语言 URL

    我正在制定一个新项目的概念 我需要支持多语言 URL 理想情况下 所有 URL 都需要使用用户的母语 所以我们不想使用domain com en contact and 域名 com es contact但我们喜欢域名 com contac
  • 简单的 css :before:hover 不起作用? CSSlint 没有错误?

    http jsfiddle net nicktheandroid k93ZK 2 http jsfiddle net nicktheandroid k93ZK 2 这应该非常简单 我只是不明白为什么它不起作用 当鼠标悬停在 before它应
  • android中无法构建react-native-push-notification

    我将在我的应用程序中使用react native push notification作为通知 但是当我使用这个库时 它会给我这样的错误 gt Task react native push notification compileDebugJ
  • 在 numpy 中对二进制值进行热编码

    我有一个 numpy 数组 如下所示 array 0 1 1 我希望它被表示为一个热编码的等价物 array 1 0 0 1 0 1 任何机构有任何想法吗 我尝试使用sklearn preprocessing LabelBinarizer
  • 在 Node.js 服务器上使用 supertest/superagent 读取响应输出缓冲区/流

    我正在尝试编写一个测试来检查 API 路由是否输出内容正确的 ZIP 文件 我正在使用 mocha 和 supertest 进行测试 我想实际读取输出流 缓冲区 读取 zip 文件内容并查看内容是否正确 有什么想法我应该怎么做 当我尝试阅读