node.js - 如何在没有 --bare 的情况下使用 Coffeescript 在 node.js 中 stub "global"模块变量?

标签 node.js testing mocking coffeescript stubbing

我有一些来自 Heroku 的环境变量,为了可读性,我倾向于将它们分配给全局变量以提高可读性:

ACCESS_TOKEN = process.env.ACCESS_TOKEN

现在我想在测试中更改它的值。我试过rewiresandboxed-module .但是,它们都直接设置全局变量,而 coffeescript 变量 are wrapped in anonymous function .

有什么办法解决这个问题,或者如果我想测试我的代码,我真的必须使用 --bare 吗?

最佳答案

我不熟悉 Node ,但我使用的方法以及我在其他技术中使用的方法是将全局变量或外部依赖项包装在一个对象中,当测试中需要。

假设您没有将值存储在 ACCESS_TOKEN 中,而是创建了一个 herokuEnvironment 对象并为其提供了 accessToken() 方法。无论您需要在何处使用您注入(inject)对象的属性。然后在生产中该方法调用 process.env.ACCESS_TOKEN。如果您需要一个安全版本来注入(inject)测试情况,您只需提供 { accessToken: function () {return 'foo';}}

关于node.js - 如何在没有 --bare 的情况下使用 Coffeescript 在 node.js 中 stub "global"模块变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15025017/

相关文章:

python - Robotframework 从字典中获取数组值

android - 用于测试的方形改造服务器模拟

javascript - 如何阻止我的代码异步运行?

javascript - 使用 mongodb 更新多个文档

node.js - 火力点: "Error: 9 FAILED_PRECONDITION: The Cloud Firestore API is not available for Cloud Datastore projects"

testing - 在 iPhone 5 上以 3.5"分辨率显示应用程序以进行开发/调试

javascript - 在某些 REST API 上有选择地启用 HTTP 基本身份验证

python - 在 Python 中,如何编写可以访问私有(private)属性而不公开它们的单元测试?

angularjs - 测试使用另一个使用 $http 的服务的 angular.service

ruby-on-rails - Rails : How to mock gems, 如 fb_graph