【发布时间】:2014-09-06 22:54:13
【问题描述】:
我正在使用 Hapi js 开发一个 restApi。项目结构如下:
|-Root
server.js
|-router
routes.js
|-handlers
authHandler.js
|-db
userDb.js
身份验证请求会到达 routes.js 并转发到 authHandler.js,然后再调用 userDb.js。 userDb.js 与数据库对话并将结果返回给 authHandler.js,后者将响应返回给客户端。
我一直在尝试编写一个 userDb.js 不与数据库对话的测试
为此,我使用 Hapi 的注入来调用路由,而无需实际启动服务器。我正在努力弄清楚如何在调用链中模拟数据库,以便我可以提供一个虚拟响应。
所以简而言之,我希望在测试时将 userDb.js 替换为 mock。
【问题讨论】:
-
你看过sinonjs.org吗?这是你需要的吗?
-
是的,我有,但到目前为止我还没有找到解释我想要做什么的文档。 sinon是否可以拦截对一个模块的所有调用,即使是另一段代码调用它?
-
是的,在您的测试中您执行
sinon.stub(module, 'function')并且从那里对module.function的所有调用都将由存根处理。 -
谢谢。我去看看。
-
我们的立场相同。很想看看你想出了什么!
标签: node.js integration-testing hapijs