【发布时间】: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