【问题标题】:How can I create "evented" it tests in mocha如何在 mocha 中创建“事件”测试
【发布时间】:2013-01-09 03:20:29
【问题描述】:

我已经在 mocha 中为使用 UDP 在客户端和服务器之间发送消息的 node.js 客户端/服务器应用程序编写了一系列测试。

我的测试主要在“客户端”进行,将服务器视为一个块框并验证来自服务器的响应。问题是一些“对话”跨越多个消息发送和接收事件,有时长达几十秒。有一个 1,000 行的测试脚本,顶部只有一个对 it 的巨大调用,这似乎很奇怪——我想在“对话”期间运行多个测试。我想要更多的粒度,如果测试的特定部分确实失败了(例如,来自服务器的前 2 个响应很好,但第 3 个响应格式错误),但初始测试通过了。

我已经研究过嵌套对it 的调用(似乎不起作用),最近将对it 的调用分开在单独的步骤中,每个步骤代表在以下位置发送或接收一条消息客户端。

这种方法似乎不起作用,因为 mocha 在第一步之后就终止了节点应用程序,从不等待套接字从服务器接收更多响应并完成其余步骤。

如何在 mocha 中创建“事件”it 调用?

第一个将在测试开始时被调用,然后每个连续的it 只会在收到来自服务器的响应后被调用。我正在寻找任何能够为我提供测试粒度的解决方案,而无需在我的 it 调用中编写大量函数,其中包括客户端和服务器之间的数十条消息。在事先已经发送和接收许多消息的对话上下文之外尝试验证来自服务器的响应也是不行的,因为这些消息决定了服务器响应的有效性。

查看我在https://gist.github.com/4490219 创建的示例实现。您可以看到结果是第一个测试通过了,但第二个测试从未执行,即使套接字显然仍处于打开状态并等待来自服务器的请求。

(PS 为 gist 的文本格式道歉 - 我在创建它时似乎无法选择 Javascript 作为语言类型)

(P.P.S. 我真的不想在每一步开始时都使用一系列 setTimeout 调用来让 mocha 认为它必须等待)。

【问题讨论】:

    标签: node.js testing mocha.js


    【解决方案1】:

    解决方案是使用嵌套its 的组合(实际上可以通过在每个嵌套it 之间使用describe 来实现)和使用具有长时间超时的注册it who's done仅在服务器响应到达时调用。

    对于未来的谷歌人,我创建了另一个要点来展示这个问题的解决方案。

    https://gist.github.com/Trindaz/4490646

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 2021-09-19
      相关资源
      最近更新 更多