gpt4 book ai didi

javascript - 测试数组长度时 Mocha 测试超时

转载 作者:搜寻专家 更新时间:2023-11-01 00:42:42 25 4
gpt4 key购买 nike

我正在用 mocha 和 expect.js 测试一个小 Node 模块,我有点头疼。

这是测试定义:

it('Should return an expansion array that contains all the objects that comes along within a single group', function (done) {

visibility.expand(data, config.data, companies, groups, function (error, expansion) {

expect(error).to.be(null);
expect(expansion).to.be.an('array');
expect(expansion).to.have.length(2);
expect(expansion.toString()).to.eql([testCompaniesIds[2], testCompaniesIds[3]].toString());

done();
});
});
  • data 是数据库访问和功能的包装器。我在我的测试套件的 before 方法中初始化它。
  • config.data 保存一个带有配置参数的对象(不相关)
  • companies 是一个字符串数组
  • groups 是一个字符串数组

我面临的问题是,当 Mocha 到达这条线时

expect(expansion).to.have.length(2);

并且长度不同于 2,而不是抛出类似这样的错误:预期为 2 但长度为 1 它只是停止并由于超时而抛出错误。

我验证了测试执行到该行。

更多信息:我正在测试的方法接收一组公司名称和一组组名称。每个组都包含一组公司数据库 ID。

该方法的预期行为是返回一个数组,其中相应的公司 ID 与属于组对象的公司 ID 数组合并。

编辑 2 由于可能重复:我错了。确实是在一个promise的范围内执行。

编辑 由于可能重复:不在 promise 范围内执行的期望(当使用 promise 并在解析或拒绝函数中执行预期时, promise 会捕获错误)。

提前致谢!

最佳答案

像这样在 try-catch 之间包装所有测试:

it('Should return an expansion array that contains all the objects that comes along within a single group', function (done) {

visibility.expand(data, config.data, [testCompanies[0].name, testCompanies[1].name], [testGroups[0].name, testGroups[1].name], function (error, expansion) {
try {
expect(error).to.be(null);
expect(expansion).to.be.an('array');
expect(expansion).to.have.length(2);

expect(checkIdIsContainedInArray(testCompaniesIds[0], expansion)).to.be(true);
expect(checkIdIsContainedInArray(testCompaniesIds[1], expansion)).to.be(true);
expect(checkIdIsContainedInArray(testCompaniesIds[2], expansion)).to.be(true);
expect(checkIdIsContainedInArray(testCompaniesIds[3], expansion)).to.be(true);

done();
} catch (e) {
done(e);
}
});
});

此测试因数组长度(为 4,应为 2)而引发错误:

  Error: expected [ '464142414441464142414441',
'464142414441464142414442',
'464142414441464142414443',
'464142414441464142414444' ] to have a length of 2 but got 4

代替:

Error: timeout of 2000ms exceeded

这可以是任何意思。

调试 expect.js 我看到它抛出一个错误,但 Mocha 没有设法捕获它。

虽然这个解决方案可能没有预期的那么优雅,但至少它提供了预期的反馈而不是超时。

关于javascript - 测试数组长度时 Mocha 测试超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29162402/

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