使用proxyquire进行模拟的策略需要跨多个测试文件(NodeJS)

时间:2016-11-30 17:28:36

标签: node.js mocking node-redis proxyquire

我在一些API文件中使用Redis缓存,这意味着我需要在测试中模拟一个依赖项。我们说我有以下文件结构

-api 
   - login.js *
   - login.spec.js
   - initiate.js 
   - initiate.spec.js
   - user.js *
   - user.spec.js
- routes.js
- server.js

让我们说那些带有* redis-connection作为依赖关系的文件,然后我可以使用Proxyquire在相应的spec.js中进行模拟。

易。

当我运行所有测试时出现问题,Mocha启动服务器。所有这些文件都将被带入routes.js,但由于Redis未运行而失败。我可以看到一些方法:

  1. 全球模拟代理查询 - docs不喜欢这样。
  2. 我目前的解决方法是,在需要redis-connection的每个文件中,有条件地导入真实内容或基本模拟process.env.NODE_ENV === 'test'。然后,如果您需要特定的行为,请将此模拟代理到相关规范文件中的更有用的模拟。康复,但似乎有效。
  3. 为每个spec文件中redis-connection的每次出现创建一个模拟。管理起来很糟糕。当Mocha最初运行服务器时,也可能无法正常工作
  4. 还有其他方法吗?我觉得我的解决方法可能暂时有效,因为我不经常使用这种依赖,但我更喜欢更具伸缩性的解决方案。

    由于

0 个答案:

没有答案