gpt4 book ai didi

javascript - 为什么我一直面对 Mocha "timeout error"; Node 也一直告诉我要解决我的 promise ?

转载 作者:可可西里 更新时间:2023-11-01 10:08:50 25 4
gpt4 key购买 nike

我一直收到超时错误,它一直告诉我确认我已经调用了 done(),即使我已经调用了。

  const mocha = require('mocha');

const assert = require('assert');

const Student = require('../models/student.js');

describe('CRUD Tests',function(){
it('Create Record',function(done){
var s = new Student({
name: "Yash"
});

s.save().then(function(){
assert(s.isNew === false);

done();
});
});
});

结果是——

CRUD Tests 1) Create Record

0 passing (2s) 1 failing

1) CRUD Tests Create Record: Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/home/yash/Documents/Development/Node/MongoCRUD/test/CRUD_test.js)

最佳答案

请注意,如所写,您的单元测试忽略了 save() 可能拒绝而不是解析的事实。每当您使用此 done 构造时,请确保您的单元测试处理错误场景,如下所示:

     s.save().then(function() {
assert(s.isNew === false);

done();
}).catch(error => {
done(error);
});

或者,由于 Mocha 内置了对 promise 的支持,您可以删除 done 参数并直接返回 promise,如下所示:

it('Create Record', function() {
// ...

return s.save().then(function() {
assert(s.isNew === false);
});
});

这种方法的优点是拒绝 promise 会自动使测试失败,并且您不需要任何 done() 调用。

关于javascript - 为什么我一直面对 Mocha "timeout error"; Node 也一直告诉我要解决我的 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54125817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com