Как вызвать несколько функций в одном методе с помощью заглушки sinon? - PullRequest
0 голосов
/ 24 июня 2019

Мне нужно проверить методы контроллера, используя тест 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);

Выдает ошибку как ошибка с вызовом базы данных

Кто-нибудь, пожалуйста, помогите мне в этом.

...