当测试失败时,我会使用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();
});
});
});
});
当我使用正确的期望值运行它时,测试传递没有超时(我已经检查过看到返回的值都是正确的)。但是当我在任一语句中将'number'更改为(例如)'string'时,而不是失败并抛出'Expected ...,Actual ...'错误,它会超时。我已经检查了文档和柴的公开问题,找不到答案。
非常感谢您的帮助。
答案 0 :(得分:4)
那是因为承诺正在捕捉失败预期所引发的错误,导致done
回调未被调用。
Mocha了解承诺,因此您可以返回承诺而不是使用回调:
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');
});
});
});
});
任何失败的期望都会导致承诺被拒绝,并且测试报告为失败。
或者,您可以坚持使用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);
});
});
});