gpt4 book ai didi

javascript - Mocha ,nodejs promise 测试无法完成,因为缺少完成

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

我正在尝试运行 promise 测试,但测试失败,认为它超过了超时限制,并建议确保我有完成的子句。

这是我的测试代码的一部分:

$configurations
.updateConfiguration(configurations_driver.NOT_VALID_MODEL) //invalid model
.then(function () {
done(new Error("Expected INVALID_MODEL error but got OK"));
}, function (error) {
chai.assert.isNotNull(error);
chai.expect(error.message).to.be.eq("INVALID_MODEL_ERROR");
chai.expect(error.kind).to.be.eq("ERROR_KIND");
chai.expect(error.path).to.be.eq("ERROR_PATH");
done();
})
.catch(done);
});

如您所见,我在其中包含所有已完成的子句,所以我不知道我是否在测试中遗漏了某些内容或结构有误。

最佳答案

Mocha 支持在不使用done 的情况下测试 promise,只要您return promise。

const expect = chai.expect

it('should error', function(){
return $configurations
.updateConfiguration(configurations_driver.NOT_VALID_MODEL) //invalid model
.then(()=> { throw new Error("Expected INVALID_MODEL error but got OK")})
.catch(error => {
expect(error).to.not.be.null;
expect(error.message).to.equal("INVALID_MODEL_ERROR");
expect(error.kind).to.equal("ERROR_KIND");
expect(error.path).to.equal("ERROR_PATH");
})
})

另请参阅 chai-as-promised使 promise 测试更像标准的断言/期望。

chai.should()
chai.use(require('chai-as-promised'))

it('should error', function(){
return $configurations
.updateConfiguration(configurations_driver.NOT_VALID_MODEL)
.should.be.rejectedWith(/INVALID_MODEL_ERROR/)
})

在 Node 7.6+ 环境或您有 babel 的地方/babel-register您还可以使用 async/await promise 处理程序

it('should error', async function(){
try {
await $configurations.updateConfiguration(configurations_driver.NOT_VALID_MODEL)
throw new Error("Expected INVALID_MODEL error but got OK")})
} catch (error) {
expect(error).to.not.be.null;
expect(error.message).to.equal("INVALID_MODEL_ERROR");
expect(error.kind).to.equal("ERROR_KIND");
expect(error.path).to.equal("ERROR_PATH");
}
})

关于javascript - Mocha ,nodejs promise 测试无法完成,因为缺少完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46841080/

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