代码之家  ›  专栏  ›  技术社区  ›  a11smiles

Mocha伪造第二个方法调用

  •  1
  • a11smiles  · 技术社区  · 6 年前

    被测试的方法调用 第二 方法两次。

    几乎 像这样(非常简单):

    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

    有人能给我指一下正确的方向吗?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   a11smiles    6 年前

    啊,我找到了:)

    从1.8版开始,sinon具有 onCall 方法