使用proxyquire进行模拟的策略需要跨越多个testing文件(NodeJS)
我在几个API文件中使用Rediscaching,这意味着我有一个依赖,我需要在testing中模拟。 假设我有以下文件结构
-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
进行模拟。
简单。
当我运行所有testing时,问题就出现了,Mocha启动服务器。 所有这些文件将被引入我的routes.js
,并且因为Redis没有运行而失败。 我可以看到几个方法:
- 全球模拟proxyquire – 文档不喜欢这个。
- 我目前的解决方法,在每个需要
redis-connection
文件中,有条件地导入真实的东西或基本的模拟,如果process.env.NODE_ENV === 'test'
。 然后,如果您需要特定的行为,请将这个模拟器在相关的spec文件中更有用的模拟。 卷土重来,但似乎工作。 - 在每个spec文件中为每个
redis-connection
发生一个模拟。 听起来很糟糕的pipe理。 当Mocha最初运行服务器时也可能不起作用
有没有其他方法呢? 我觉得我的解决方法可能暂时工作,因为我不经常使用这种依赖关系,但我更喜欢一个更具可扩展性的解决scheme。
谢谢