Chai BDD 风格 'should' 是异步的吗?

Is the Chai BDD style 'should' async?

我的单元测试遇到了很多奇怪的问题(例如 or here),我想排除这种可能性。所以,这是我潜在的愚蠢问题:

来自 Chai 的 should 样式是阻塞的还是异步的?在某种 should 链之后进行 done() 调用是否安全,或者是某种理想的解决方案回调?

我很确定这不是问题所在。但似乎我每天都会发现一个由 Node 的非阻塞 IO(或者更确切地说,我缺乏使用它的经验)引起的新问题,我想检查一下我没有在这里犯错误。

我对 .should 有过奇怪的体验,因为它需要将自己附加到您正在 should 的对象上。我对 expect() 有更好的体验。而sync/async依赖测试运行ner。 mocha 同步。每个带有 expect() 的断言都是顺序 运行,并且是原子的,因此那里没有异步操作。 should.

也是如此

我更喜欢 expect 而不是 should 因为 something.should 如果某些东西未定义会抛出错误。我的偏好没有其他原因。

既不应该也不期望使测试异步。 done 是使测试异步的原因,并且 done 应该在承诺解决和拒绝块(不仅仅是一个)中被调用。你可能想在完成失败之前调整摩卡(我假设摩卡)超时时间。希望这有帮助。