Nock拦截后所有sinon存根都失败

时间:2019-01-22 22:05:17

标签: javascript sinon chai nock

Im运行单元针对软件应用程序进行测试。在应用程序的特定部分中,我具有一些异步功能,其次是一个http请求,然后是更多的异步功能。我正在使用sinon对所有内容进行测试,以测试此函数中的代码。正确打出了被击中的前几个功能。我的nock拦截了http请求,然后所有随后的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 ext2function添加到请求promise函数上方,则它将根据sinon存根正确执行。 另外,这只是我代码的一个示例,因此希望这些没有语法问题的哈哈。

0 个答案:

没有答案