首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试superagent promise

如何测试superagent promise
EN

Stack Overflow用户
提问于 2018-09-03 19:21:29
回答 2查看 564关注 0票数 0

我有一个用于HTTP请求的函数:

代码语言:javascript
复制
export default {
  getRequest: (url, params) => {
    return new Promise((resolve, reject) => {
      superagent.get(url)
        .query(params)
        .set('Accept', 'application/json')
        .end((err, response) => {
          if (!response) {
            reject(new Error('Something went wrong...'));
            return;
          }
          const payload = response.body || response.text;
          if (err) {
            reject(payload || err);
            return;
          }
          resolve(payload);
        });
    });
  }
};

我想在Promise解析或拒绝时测试这个函数。

我的测试如下所示:

代码语言:javascript
复制
import superagent from 'superagent';
import HTTPAsync from '../HTTPAsync';

describe('HTTPAsync. test', () => {
  describe('getRequest test', () => {
    const url = '/url';
    const params = { param: 'value' };
    const result = HTTPAsync.getRequest(url, params);
    it('Should be promise', () => {
      expect(result).toBeInstanceOf(Promise);
    });
    it('Should be pfromise', () => {
      expect(result.resolve()).toBe('');
    });
  });
});

但是我不知道如何在愉快的场景中解决返回的promise或错误,并检查函数的结果

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-02 23:58:23

我做了另一种测试,这对我很有帮助:

代码语言:javascript
复制
import superagent from 'superagent';
import HTTPAsync from '../HTTPAsync';

describe('HTTPAsync. test', () => {

  describe('getRequest test', () => {
    superagent.get = jest.fn(url => {
      return superagent;
    });
    superagent.query = jest.fn(query => {
      return superagent;
    });
    superagent.set = jest.fn(args => {
      return superagent;
    });
    superagent.end = jest.fn(cb => cb(null, { text: 'zaebis voda' }));

    const url = 'localhost:5000/url';
    const params = { param: 'value' };
    const result = HTTPAsync.getRequest(url, params);
    it('Should be promise', () => {
      expect(result).toBeInstanceOf(Promise);
      // HERE I WILL CHECK EXPECTED VALUES     
      return result.then(data => console.log(data));
    });
  });
});
票数 0
EN

Stack Overflow用户

发布于 2018-09-03 20:09:41

您可以使用superagent在成功或错误时捕获请求,如下所示:

代码语言:javascript
复制
const request = require('superagent');

describe('HTTPAsync. test', () => {
  it('Should be pfromise', done => {
    request
      .get('/your_url')
      .then(res => {
        // res.body, res.headers, res.status
        //your own logic
        done();
      })
      .catch(err => {
        // err.message, err.response
        //your own logic
        done();
      });
  });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52148770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档