Как проверить супер-обещание - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть функция, которую я использую для HTTP-запросов:

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 разрешит или отклонит.

Мой тест выглядит так:

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('');
    });
  });
});

Но я не знаю, как разрешить возвращенное обещание при удачном сценарии или ошибке и проверить результаты функции

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Я сделал другой тип теста, и это помогло мне:

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 голосов
/ 03 сентября 2018

Что вы можете сделать, это поймать ваш запрос на успех или ошибку, используя суперагент, как это:

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();
      });
  });
});
...