Мокко подделка вызова второго метода - PullRequest
0 голосов
/ 25 января 2019

У меня есть метод с вложенным оператором If-Then.

Тестируемый метод вызывает метод second дважды.

Что-то почти вот так (очень упрощенно):

module.exports = {
    method_under_test: async function () {
        let stat = await privateMethod();

        if (stat == 0) { return true; }
        else if (stat == 1) { return false; }
        else if (stat == 2) {
            doSomething();

            stat = await privateMethod();
            if (stat == 0) { return true; }
            else { return false; }
        }
        else { return false; }
    }
}

function privateMethod() {
    return new Promise((resolve, reject) => {
        doAsync((rep) => {
            if (rep) {
                if (rep === 'something') { resolve(0); }
                else { resolve(1); }
            } else {
                resolve(2);
            }
        });
    });
}

Обратите внимание, что если stat == 2, то процесс выполняется, а закрытый метод запускается второй раз, чтобы убедиться, что процесс запущен успешно.

ПРИМЕЧАНИЕ: Я не могу изменить метод doAsync в своем личном методе. Все, что я могу сделать, это интерпретировать результаты.

Итак, мой вопрос ... Я хочу подделать мой privateMethod, чтобы при первом вызове он возвращал 2, но при втором вызове он возвращал 1 и позволял мне проверить else часть моего вложенного If-Else.

Может кто-нибудь указать мне правильное направление?

Спасибо.

1 Ответ

0 голосов
/ 25 января 2019

аааа, я нашел это :)

sinon, начиная с версии 1.8, имеет метод onCall.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...