【问题标题】:How to test Nodejs request callback listener?如何测试 Nodejs 请求回调监听器?
【发布时间】:2018-01-17 17:18:57
【问题描述】:

我使用 jest 进行单元测试。我的代码是

return new Promise((resolve, reject) => {
  let request = http.request(options, resp => {
    resp.setEncoding('utf-8');
    let body = '';
    resp.on('data', chunk => {
      body += chunk
    });
    resp.on('error', error => {
      body += error;
      reject(body, resp);
    });
    resp.on('end', () => {
      this.end(method, resp, url, body, data, opts)
        .then(body => {
          resolve(body, resp);
        })
        .catch(err => {
          reject(err, resp);
        });
    });
  });
  request.end();

我使用jest.fn() 的模拟变量,但它需要EventEmitter 对象作为request 函数的第二个参数resp。 在调用request 函数end 事件监听器后将调用。 我想执行dataerror 事件侦听器,但我不知道该怎么做。

【问题讨论】:

    标签: javascript unit-testing jestjs


    【解决方案1】:

    查看官方Mock functions documentation,尤其是mock-implementations part。您还可以在网上找到一些教程,例如Unit Testing Beginners Guide - Part 3 - Mock Http And Files access

    【讨论】:

    • 谢谢。在您的第一个链接中,它模拟了具有 http.get() 的整个请求函数。我的问题是如何测试 http.requet() 第二个参数的数据和错误事件监听器。
    • 对于第二个链接,我不知道如何在节点环境中将其移植到 requet 方法。你能给我举个例子吗
    • 我看不到测试“数据”或“错误”回调的意义,我认为您应该模拟整个 http.request 函数以检查代码的边缘情况返回值(例如. 最终成功和错误机构)。您还可以查看 nock module 以完全模拟 http API。
    猜你喜欢
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    相关资源
    最近更新 更多