我在一些 API 文件中使用了 Redis 缓存,这意味着我需要在测试中模拟一个依赖项。假设我有以下文件结构
-api
- login.js *
- login.spec.js
- initiate.js
- initiate.spec.js
- user.js *
- user.spec.js
- routes.js
- server.js
假设那些带有 * 的文件redis-connection
作为依赖项,然后我可以spec.js
使用 Proxyquire 在相应的文件中进行模拟。
简单的。
当我运行所有测试时,问题就来了,Mocha 启动了服务器。所有这些文件都将被带入我的文件中routes.js
,但由于 Redis 未运行而失败。我可以看到一些解决方法:
- 全局模拟 proxyquire -文档不喜欢这样。
- 我当前的解决方法,在每个
redis-connection
需要的文件中,有条件地导入真实的东西或基本的模拟 ifprocess.env.NODE_ENV === 'test'
。然后,如果您需要特定的行为,请将此模拟代理为相关规范文件中更有用的模拟。令人费解,但似乎有效。 redis-connection
为每个规范文件中的每次出现创建一个模拟。听起来很难管理。当 Mocha 最初运行服务器时也可能不起作用
有没有其他方法可以解决这个问题?我觉得我的解决方法可能暂时有效,因为我不经常使用这种依赖项,但我更喜欢可扩展的解决方案。
谢谢