我有一些来自 Heroku 的环境变量,为了便于阅读,我倾向于将它们分配给全局变量以提高可读性:
ACCESS_TOKEN = process.env.ACCESS_TOKEN
现在我想在测试中改变它的值。我试过rewire和sandboxed-module。但是,它们都是直接设置全局变量,而咖啡脚本变量被包装在匿名函数中。
有没有办法解决这个问题,或者--bare
如果我想测试我的代码,我真的必须使用吗?
我有一些来自 Heroku 的环境变量,为了便于阅读,我倾向于将它们分配给全局变量以提高可读性:
ACCESS_TOKEN = process.env.ACCESS_TOKEN
现在我想在测试中改变它的值。我试过rewire和sandboxed-module。但是,它们都是直接设置全局变量,而咖啡脚本变量被包装在匿名函数中。
有没有办法解决这个问题,或者--bare
如果我想测试我的代码,我真的必须使用吗?
我不熟悉节点,但我使用的方法以及我在其他技术中使用的方法是将全局变量或外部依赖项包装在一个对象中,在测试中需要时可以将其换成存根或模拟对象.
说不是将值存储在 ACCESS_TOKEN 中,而是创建了一个 herokuEnvironment 对象并为其提供了方法 accessToken()。无论您需要在哪里使用注入对象的属性。然后在生产中该方法调用 process.env.ACCESS_TOKEN。如果您需要一个安全版本来注入测试情况,您只需提供 { accessToken: function () {return 'foo';}}