Тестовый класс в node.js, макет запросов - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть следующий класс:

class QueueRequest{

  constructor(){
    this.queue = [];
  }

  async getKeepAliveRequestLibrary(httpOptions){
    //creation of special type of request with Keep-Alive
    const httpModule = (airConf.useSecureConnection ? https : http);
    const keepAliveRequest = request.defaults({
      agent: new httpModule.Agent({
        keepAlive: true,
        maxSockets: airConf.maxSockets,
      })
    });
    let response = await keepAliveRequest(httpOptions);

    return response;
  }

  async addRequestToQueue(httpOptions){

    this.queue.push(httpOptions);
    let response = await this.getKeepAliveRequestLibrary(this.queue[0]);
    this.queue.shift();

    return response;
  }

}

module.exports = QueueRequest;

Я пытаюсь протестировать класс следующим образом:

const sinon = require('sinon');
const rp = require('request-promise-native');
//override the original common, so we can manipulate the config
jest.mock('./common');

//local dependencies
require('./common').prepareConfigForTaskHandler(13);

const QueueRequest = require('./queue-request');

let queue = new QueueRequest();


describe('Testing QueueRequest module:', () => {
  //setup
  it('checking proper queueing one request', () => {
    sinon.stub(rp, 'Request').resolves({});

    //test

  });

  //teardown
  it('checking proper queueing many requests', () => {

  });

});

Моя задача - протестировать модуль как целый класс.Мое намерение состоит в том, чтобы проверить, не делая реальных запросов.Я хочу провести два теста, один тест только для одного теста, а второй для многих тестов.

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете смоделировать запрос с помощью Nock (https://github.com/nock/nock).. Вы можете указать URL, заголовки и ожидание ответа. Например: я хочу смоделировать GET-запрос к услуге, и я ожидаю, что определенная полезная нагрузка в качестве ответа с statusCode 200.

nock(baseUrl, {reqheaders: {"Authorization": "Bearer <token>"}}.get(path).reply(200, {result:{ "Id": 1}})
...