gpt4 book ai didi

javascript - Mocha 不捕获未声明的变量

转载 作者:行者123 更新时间:2023-11-30 00:21:02 25 4
gpt4 key购买 nike

我刚开始使用 mocha,我遇到了这个错误。请帮助我理解这种行为。

'use strict';
var flightMiddlewareMock = require(process.cwd() + '/test/mock/response/flightmock');


describe('Test Flights function: getTime', function(){
var mockData;
beforeEach(function(done){
mockData = flightMiddlewareMock.getValidData();
done();
}
it('getFlightDescription returns the full flight description', function(done){

contentUtils.loadContent({
'files': {
activity: '/flights/america'
},
'locality': "en_US"
}, function(err, bundle) {

var flightsMiddleware = new FlightsMiddleware(country, mockData.req, bundle);
console.log('inside content callback');

description = flightsMiddleware.getFlightDescription(mockData.results.body.items[0]);

assert.equal(description, "Boeing 777");
done();
}
});
});

输出看起来像这样

inside content callback
inside content callback
inside content callback

- 测试失败!

问题 - 我不明白为什么尽管使用了“use strict”它却不提示没有声明描述。

请注意:如果我将其修改为

var description = .....

中提琴奏效了!我错过了什么吗?感谢您的宝贵时间!

最佳答案

Mocha 会报告试图赋值给一个未声明的变量所导致的异常。如果我运行这个:

"use strict";

it("foo", function (done) {
setTimeout(function () {
description = "foo";
done();
}, 1000);
});

我得到结果:

  1) foo

0 passing (1s)
1 failing

1) foo:
Uncaught ReferenceError: description is not defined
at null._onTimeout (test.js:5:21)

现在,我使用了 setTimeout,这是一个行为良好的函数,当传递给它的回调抛出异常时,setTimeout 不会阻止此异常到达执行上下文的顶部。换句话说,它不会吞下异常。

如果你有一个抛出异常的回调,但这个异常被调用回调的代码吞没,你将得到一个测试超时,但你不知道为什么,因为 Mocha 不会无法检测到异常。它依赖于 uncaughtException event ,如果异常被吞下,则不会发出。

关于javascript - Mocha 不捕获未声明的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161342/

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