gpt4 book ai didi

node.js - 'expect' 语句失败时出现 Mocha Chai 超时错误

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

当测试失败时,我使用 Mocha 和 Chai 的“expect”语句时出现意外超时行为。

代码:

require('./lib/test-env.js');

const expect = require('chai').expect;
const estimateQuery = require('../lib/estimate-query-helper.js');

describe('testing auth routes', function() {
describe('testing estimate query helper', function() {
it('should return an average daily rate and occupancy rate', (done) => {
estimateQuery.getEstimate()
.then(result => {
expect(result[0]['avg(`Average Daily Rate`)']).to.be.a('number');
expect(result[0]['avg(`Occupancy Rate LTM`)']).to.be.a('number');
done();
});
});
});
});

当我使用正确的预期值运行此程序时,测试通过且没有超时(并且我已检查返回值是否全部正确)。但是当我在任何一个语句上将“数字”更改为(例如)“字符串”时,而不是失败并抛出“预期...,实际...”错误,它超时。我已经检查了文档和 Chai 的开放问题,找不到答案。

非常感谢您的帮助。

最佳答案

那是因为 promise 捕获了期望失败抛出的错误,导致 done 回调没有被调用。

Mocha 理解 promise ,因此您可以返回 promise 而不是使用回调:

describe('testing auth routes', function() {
describe('testing estimate query helper', function() {
it('should return an average daily rate and occupancy rate', () => {
return estimateQuery.getEstimate()
.then(result => {
expect(result[0]['avg(`Average Daily Rate`)']).to.be.a('number');
expect(result[0]['avg(`Occupancy Rate LTM`)']).to.be.a('number');
});
});
});
});

任何失败的期望都会导致 promise 被拒绝并且测试被报告为失败。

或者,您可以坚持使用 done 回调并添加一个 catch:

describe('testing auth routes', function() {
describe('testing estimate query helper', function() {
it('should return an average daily rate and occupancy rate', (done) => {
estimateQuery.getEstimate()
.then(result => {
expect(result[0]['avg(`Average Daily Rate`)']).to.be.a('number');
expect(result[0]['avg(`Occupancy Rate LTM`)']).to.be.a('number');
done();
})
.catch(done);
});
});
});

关于node.js - 'expect' 语句失败时出现 Mocha Chai 超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40065098/

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