我有一个方法,包含以下行:
permissions = Rails.application.config_for(:admin_auth)
它读取文件config/admin_auth.yml
并返回我稍后在同一方法中使用的哈希。
问题是,为了测试这个方法,我需要为permissions
提供不同的值,但我找不到存根Rails.application.config_for
调用的方法。
我试过了:
allow(Rails::Application).to receive(:config_for) { { admin: 'super_admin' } }
但是我收到了错误。
答案 0 :(得分:4)
我认为存根配置不是一个好主意,因为很可能在您实际到达测试中的任何内容之前会加载rails env。对于这种情况,您可以考虑以下解决方案:
1.对方法分离权限并将其存根
# code
def permissions
Rails.application.config_for(:admin_auth)
end
# test
allow(your_object).to receive(:permissions).and_return({ admin: 'super_admin' })
设置文件
答案 1 :(得分:1)
尝试:
allow_any_instance_of(Rails::Applcation).to ...
或
allow(Rails.application).to ...