2

我在一些 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 未运行而失败。我可以看到一些解决方法:

  1. 全局模拟 proxyquire -文档不喜欢这样。
  2. 我当前的解决方法,在每个redis-connection需要的文件中,有条件地导入真实的东西或基本的模拟 if process.env.NODE_ENV === 'test'。然后,如果您需要特定的行为,请将此模拟代理为相关规范文件中更有用的模拟。令人费解,但似乎有效。
  3. redis-connection为每个规范文件中的每次出现创建一个模拟。听起来很难管理。当 Mocha 最初运行服务器时也可能不起作用

有没有其他方法可以解决这个问题?我觉得我的解决方法可能暂时有效,因为我不经常使用这种依赖项,但我更喜欢可扩展的解决方案。

谢谢

4

0 回答 0