我正在测试一些从环境变量中提取其配置的代码(由Heroku config vars在生产中设置,对于本地开发,我使用foreman).

用RSpec测试此类代码的最佳方法是什么?

我想到了这个:

before :each do
    ENV.stub(:[]).with("AWS_ACCESS_KEY_ID").and_return("asdf")
    ENV.stub(:[]).with("AWS_SECRET_ACCESS_KEY").and_return("secret")
end

若您不需要测试环境变量的不同值,我想您可以将它们设置为spec_helper.

推荐答案

那就行了.

另一种方法是在代码和环境变量之间设置一层间接层,比如某种易于模拟的配置对象.

Ruby相关问答推荐

Ruby 中的 Float#floor 和 Float#to_i 有什么区别?

RSpec 中有没有一种方法可以同时断言调用次数和参数列表?

如何解密在 sjcl.js 中使用 ruby​​ 创建的 AES-256-GCM

Symfony 2assets资源过滤器异常中的指南针

Ruby检测方法

如何在 linux (ubuntu) 上更新 ruby​​?

按键对哈希进行分组并对值求和

安装 RVM:需求安装失败,状态为:1

是否有等效于 `Array::sample` 的哈希值?

Ruby 的排序方法使用哪种算法?

Ruby字符串上的扫描和匹配有什么区别

Ruby:继承与类变量一起工作的代码

从 1 开始循环

在不同的换行符上拆分

Ruby on rails - 静态方法

Ruby中block和&block的区别

将两个数组组合成哈希

Ruby on Rails switch

如何编写启动 tmux 会话的 shell 脚本,然后运行 ​​ruby​​ 脚本

JavaScript Array:获取项目的范围