Все заглушки sinon терпят неудачу после перехвата nock - PullRequest
0 голосов
/ 23 января 2019

Я запускаю юнит-тесты для программного приложенияВ определенной части приложения у меня есть несколько асинхронных функций, за которыми следует http-запрос, за которым следуют другие асинхронные функции.Я работаю над тем, чтобы просто заглушить все с помощью sinon, чтобы протестировать код в этой функции.Первые несколько функций, которые ударили, правильно заглушены.Http-запрос перехватывается моим nock, а затем все последующие заглушки sinon завершаются ошибкой, и функции пытаются выполнить.

const sinon = require('sinon');
const sandbox = sinon.createSandbox();
const nock = require('nock');
const expect = require('chai').expect;

const ExternalClass = require('ExternalClass');
const ExternalClass2 = require('ExternalClass2');
const TestClass = require('TestClass');

describe('Test a Class',()=>{
    beforeEach(()=> {
        sandbox.stub(ExternalClass, 'extFunction').returns('');
    });

    afterEach(() => {
        sandbox.restore();
        nock.cleanAll();
    });

    describe('Test Specific Function ', () => {
        it('Successfully executes', ()=> {
        nock('http://localhost:8989/api/')
            .get('/something')
            .reply(200, {name: 'thething', id:'1234'});

        sandbox.stub(ExternalClass2, 'ext2function')
            .returns({name: 'theotherthing', id:'4567'});
        TestClass.testfunction().then(res => {
            expect(res).to.be.an('object');
            });
        });
    });
});

Этот код проверяет следующее ------->

const testfunction = async(){
  await extFunction();  //executes correctly according to the stub
  let options = {
    url: 'http://localhost:8989/api/something',
    method: 'GET',
    json: true
  };
  await rp(options);  //executes and is correctly intercepted by nock
  await ext2function(); //doesnt execute correctly according to the stub
}

Также: если я добавлю функцию await ext2 выше функции обещания запроса, он будет выполняться правильнов соответствии с заглушкой синона.Кроме того, в качестве заголовка это всего лишь пример моего кода, так что, надеюсь, эти проблемы с синтаксисом, ха-ха.

...