gpt4 book ai didi

javascript - Mocha/节点 : how to use assert. 拒绝()?

转载 作者:行者123 更新时间:2023-12-04 12:44:06 25 4
gpt4 key购买 nike

我尝试关注 documentation为了使用 assert.rejects 测试错误消息(我确实有高于 v10 的节点)。

但它总是会过去,即使是一个荒谬的信息。我究竟做错了什么?

it("should fail but it's not", 
async ()=> {
let itemId = 'not an id'
assert.rejects(
await ListRepo.checkById(itemId),
{message: 'abracadabra'}
)
}
)

更新:
看来,如果我返回 assert.rejects,它会起作用。但我仍然不知道原因。

最佳答案

在我写这篇文章时,上面/以前写的所有内容都是正确的,但其中大部分都是不必要的复杂。你必须返回一个promise是正确的,这样mocha本身就有东西等待,否则它会立即返回(在你的promise可以解决或拒绝之前)。缺少的部分是手动等待一个 promise 很少是你真正想要在这里做的。
@caub 在评论中暗示了这个最简单的模式——等待 assert.rejects 返回的 promise .具体来说:

it("should fail but it's not", 
async ()=> {
let itemId = 'not an id'
await assert.rejects(
ListRepo.checkById(itemId),
{message: 'abracadabra'}
)
}
)
这里有三个关键点:
  • 测试函数本身必须是 async .
  • await assert.rejects在(异步)测试函数内部调用。这会自动使测试函数返回 Promise<void> ,这正是你想要的。这将重要的部分放在了 assert 调用的位置,与手动返回/处理 promise 相比,更容易在其他地方复制/粘贴调用,并且更容易在一个测试中断言多个拒绝。
  • 不要await你传递给 rejects 的内容称呼。你应该传递一个 promise ——而不是一个 await ed值。
  • 关于javascript - Mocha/节点 : how to use assert. 拒绝()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54247064/

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