gpt4 book ai didi

javascript - 当测试包含在 describe() 中时,Mocha 不会失败

转载 作者:行者123 更新时间:2023-11-30 11:52:22 26 4
gpt4 key购买 nike

我有相对简单的 mocha & chai 测试设置。不幸的是,当我运行 mocha 时,肯定会失败的测试通过了!这是我的测试用例。

var expect = require('chai').expect;
var nock = require('nock');
var request = require('request');

var testUrl = 'http://test.wicked.ti';
var getItems = function(url, callback) {
request.get(url + '/items',function(err, data) {
if(err) throw err;
callback(data);
});
};

describe('Sample Unit Tests', function(){
it('I am making sure the correct rest endpoint is called', function() {
var request = nock(testUrl)
.get('/items')
.reply(200, {});

getItems(testUrl, function(data) {
console.log(data); // This runs
expect(true).to.equal(false); // This should always fail!
done();
});
});
});

在 try catch 中包装 expect(true).to.equal(false) 会抛出一个错误(如下所示),该错误被很好地捕获了。那就是

   it('I am making sure the correct rest endpoint is called', function() {
var request = nock(testUrl)
.get('/items')
.reply(200, {});

getItems(testUrl, function(data) {
console.log(data); // This runs

// Adding try/catch block
try { expect(true).to.equal(false); } catch(err) { console.error(err) }

done();
});

这是记录的错误

{ [AssertionError: expected true to equal false]
message: 'expected true to equal false',
showDiff: true,
actual: true,
expected: false }

我一直在绞尽脑汁想弄清楚我可能做错了什么但没有成功!问题是我错过了什么?如果有任何帮助,我尝试在 describe()it() block 之外编写它,它运行得很好。

最佳答案

那是因为您正在运行同步测试,所以它不会等待异步函数完成。要使其异步,您的回调需要一个参数:

it('...', function(done) {
// |
// |
// this is where "done" comes from and it's
// the missing bug in your code

关于javascript - 当测试包含在 describe() 中时,Mocha 不会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39082729/

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