【问题标题】:expect in Promise based then function in jest not failing期望在基于 Promise 的 then 函数中没有失败
【发布时间】:2023-03-20 22:05:02
【问题描述】:

所以我花了几分钟调试我的 jest 测试并想知道为什么它没有失败,似乎 jest 正在使用 expect 抛出的异常来处理失败,并且不知何故我的函数不会像它应该的那样抛出未处理的异常:

这是我通过的测试:

    fit('should evalute let over lambda', function() {
        lips.exec(`(define x 10) (* x x)`).then(result => {
            expect(result).toEqual([undefined, 20]);
        }) //.catch(e => console.log(e.message));
    });

console.log in catch 打印代码失败,但摘要显示所有测试都通过。

这是我的 exec 函数,一切正常吗?

function exec(string, env, dynamic_scope) {
    if (env === true) {
        env = dynamic_scope = global_env;
    } else {
        env = env || global_env;
    }
    var list = parse(tokenize(string));
    return new Promise((resolve, reject) => {
        var results = [];
        (function recur() {
            function next(value) {
                console.log('next');
                results.push(value);
                recur();
            }
            var code = list.shift();
            if (!code) {
                resolve(results);
            } else {
                try {
                    var result = evaluate(code, env, dynamic_scope);
                } catch (e) {
                    return reject(e);
                }
                if (result instanceof Promise) {
                    console.log('promise');
                    result.then(next).catch(reject);
                } else {
                    next(result);
                }
            }
        })();
    });
}

承诺已解决。期望被执行它抛出异常但它不传播。

【问题讨论】:

    标签: javascript jestjs es6-promise


    【解决方案1】:

    您需要在测试中 return 您的承诺链,以便测试运行者可以看到它的结果(并等待它完成)。

    【讨论】:

      猜你喜欢
      • 2014-07-19
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      相关资源
      最近更新 更多