gpt4 book ai didi

node.js - 在nodejs中测试后台进程(使用磁带)

转载 作者:行者123 更新时间:2023-11-28 20:55:43 26 4
gpt4 key购买 nike

这是一个关于测试的一般性问题,但我将在 Node.js 的上下文中对其进行构建。我不太关心特定技术,但这可能很重要。

在我的应用程序中,我有几个模块会在我的网络服务器收到请求时调用它们来工作。对于其中一些模块,我会在调用它们之前关闭请求。

什么是测试这些模块是否正在执行它们应该执行的操作的好方法?

咨询here对于 RSpec 来说,就是模拟这些模块正在做的工作,并确保调用适当的方法。这对我来说很有意义,但在 Node.js 中,由于我的模块不是全局的,我认为我不能在不更改程序架构的情况下模拟函数,以便每个实例都接收它需要的对象实例1.

[1] 这是一个众所周知的编程范式,但我现在记不起它的名字了。

我看到的另一个选择是使用 setTimeout 并尽可能猜测这些模块何时完成它们的工作。

这些似乎都不理想。

我错过了什么吗?后台进程没有测试吗?

最佳答案

由于您谈到的是这些后台组件的集成测试,因此我想到了一些策略。

  1. 在测试模式下消除操作中的所有异步性。我在想象你有某种排队过程(这可能是一个错误的假设),你把工作扔进队列,然后你的模块拿起那个工作并完成他们的任务。您可以重新设计您的测试工具,使测试工具充当排队机制,并且您可以有效地直接控制模块何时执行。
  2. 重构您的模块以采用某种next 回调函数。它们最终的功能有点像 Express 的中间件层或 asynceach 函数的工作方式,但是在每个模块中你会传递一些回调,当该模块的任务完成。一旦所有模块都已报告,您就可以检查程序的状态。
  3. 正是您已经建议的 - 等待一段时间,如果仍未完成,则认为失败。 Mocha 有点 就是这样做的,因为如果给定的测试超过了可定义的阈值,那么它就是失败的。不过我不喜欢这种方式,因为如果您添加更多测试,它们都必须等待相同的时间。

关于node.js - 在nodejs中测试后台进程(使用磁带),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22067718/

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