模拟node.js模块
可以说我有这种情况(架构)
layer1 -> layer2 -> layer3
层只是正常的node.js模块(有一些导出的function)
Layer1需要layer2并调用其function,而layer2需要layer3并调用其function。
我想testinglayer1中的函数,但也模拟layer3(我在layer1中的函数调用传播到layer3,这个我想模拟)。
做这个的最好方式是什么? 我已经看过这个模块: https : //github.com/thlorenz/proxyquire,但我不认为它支持嘲笑当事情是深入2级或更多级别,如我的例子。
感谢您的任何build议!
我用嘲讽取得了巨大的成功,尽pipe取决于你想要嘲笑的东西,它会变得非常乏味。
不过,你的设置似乎有点古怪。 如果要unit testing第1层,则只需要模拟第2层,而第1层和第3层之间不应有任何(直接)连接。
其实我是错误的代理。 是的,你可以在你正在testing的原始模块下面2或更多的深度模拟一些模块,并且它们在他们的例子中performance得很好。 只要把存根与你正在嘲笑的模块的path。 如果你正在模拟layer3,stub的path必须和layer2中写入的layer3的path相同(所以它相对于layer2而不是layer1或某个根)。
我们正在进行集成testing,因为我们使用的是mongoDB数据库,并且没有mongo的embedded式数据库,所以我觉得这很糟糕。有一些尝试和替代方法,但是我看到它们不够好。 所以我的问题有一个根源,我们不得不嘲笑整个数据层。 在此之前,我们有一些机器上的真正的数据库和CI服务器上的集成testing(jenkins)使用的是真实的数据库,但这不是很好,因为你不能在你的笔记本电脑上运行testing。
所以嘲笑应用程序的整个数据层也是非常糟糕的解决scheme,但正如我所看到的,没有其他select。 如果有人有相同或相似的情况,请随时在这里写你的解决scheme。
而且我也想全局地投诉node.js模块。 社区真的很活跃,很多,但很多模块没有后向兼容性,甚至更糟的是其中有些模块不能很好地与其他模块互动。 例如,对于HTTP客户端,我们使用模块restler和新版本的节点,所以我们必须切换到restify,因为restler对新版本的节点不起作用。 但我们也用nock来嘲笑HTTP请求(真的很酷的模块btw)和BUMP – restify与nock不兼容…也许这是这个开源的,基于社区的技术的价格和node.js的快速开发
- 如何在NodeJS中testingrecursion调用的函数?
- 我如何dynamic生成JavaScript /节点中的testing用例?
- 茉莉花是在量angular器超时,Selenium服务器之后崩溃(问题出现在Chrome浏览器,Firefox – 确定)
- 性能testingnode.js“net”
- 如何在Node应用程序中编写Interswitch WebPAY集成testing?
- 基于浏览器的Phantom / Caspertesting
- browser-perf和量angular器perf和perfjankie之间的区别
- Nodejstesting。 如何避免竞赛条件?
- 在JSDom的Nodetesting环境中正确接近“窗口”