Я запускаю юнит-тесты для программного приложенияВ определенной части приложения у меня есть несколько асинхронных функций, за которыми следует 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 выше функции обещания запроса, он будет выполняться правильнов соответствии с заглушкой синона.Кроме того, в качестве заголовка это всего лишь пример моего кода, так что, надеюсь, эти проблемы с синтаксисом, ха-ха.