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存根正确执行。 另外,这只是我代码的一个示例,因此希望这些没有语法问题的哈哈。