【发布时间】:2014-02-27 11:52:33
【问题描述】:
这是一个关于测试的一般问题,但我将在 Node.js 的上下文中构建它。我不太关心特定的技术,但它可能很重要。
在我的应用程序中,当我的 Web 服务器接收到请求时,我有几个模块被调用来工作。对于其中一些模块,我会在调用它们之前关闭请求。
有什么好的方法可以测试这些模块是否在做它们应该做的事情?
RSpec 的建议here 是模拟这些模块正在做的工作,并确保调用了适当的方法。这对我来说很有意义,但是在 Node.js 中,由于我的模块不是全局的,我认为我不能在不更改程序架构的情况下模拟函数,以便每个实例都接收它需要的对象实例1.
[1] 这是一个众所周知的编程范式,但我现在不记得它的名字了。
我看到的另一个选项是使用setTimeout 并最好猜测这些模块何时完成它们的工作。
这些似乎都不理想。
我错过了什么吗?后台进程没有测试吗?
【问题讨论】:
-
您是否尝试过单独测试这些模块?例如,您是否尝试过为每个单独的模块编写测试,而不是测试整个集成系统,模拟它们从主流程中得到的东西?每当我执行后台进程时,该进程都会有一些对象或对象集合。这些可以独立地执行,无论它们是否在后台进程中。
-
是的,我对模块进行了单元测试,它们可以独立执行。对这些进行集成测试是不是很正常?