Мне нужно проверить методы контроллера, используя тест sinon
Но я не могу вызвать две внешние функции в одном методе.
Я пробовал вот так
describe('getContactDetails', () => {
let req, functionToTest = sinon.stub();
before(() => {
functionToTest = leadsController.__get__('getContactDetails');
});
beforeEach(() => {
req = {};
});
it('Should catch any error sent back from the model', async() => {
let res = getRes();
contactModelStub.storedProcCall.throws(new Error('Stubbed output'));
contactModelStub.getModelQuery.throws(new Error('Stubbed output'));
await functionToTest(req, res);
await expect(res.status.getCall(0).args[0]).to.equal(500);
await expect(res.send.getCall(0).args[0]).to.equal('There was an error with the model call.');
await expect(loggerStub.error.calledOnce).to.be.true;
});
it('Should return the response from the model', async() => {
let res = getRes(),
responseModel = [{
"id": 19107,
"text": "williyams"
}];
contactModelStub.getModelQuery.returns(modelResponse);
await functionToTest(req, res);
await expect(res.send.getCall(0).args[0]).to.deep.equal(responseModel);
});
});
Вот контроллер
async function getContactDetails(req, res) {
const session = req.tbSession;
try {
await contactModel.storedProcCall(session['myid'][20]);
req.query.clientId = session['clientId'];
let contactDetails = await contactModel.getModelQuery(req.query);
res.status(200).send(contactDetails).end();
} catch (error) {
logger.error(error);
res.status(500).send('error with database call').end();
}
}
Если я не использую этот первый вызов
await contactModel.storedProcCall(session['myid'][20]);
Работает нормально
Но когда, если он вызывается раньше
await contactModel.getModelQuery(req.query);
Выдает ошибку как ошибка с вызовом базы данных
Кто-нибудь, пожалуйста, помогите мне в этом.