Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是否使用Rspec存根调用Rails.application.config_?_Ruby On Rails_Ruby_Rspec - Fatal编程技术网

Ruby on rails 是否使用Rspec存根调用Rails.application.config_?

Ruby on rails 是否使用Rspec存根调用Rails.application.config_?,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,我有一个具有以下行的方法: 权限=Rails.application.config\u for:admin\u auth 它读取config/admin_auth.yml文件并返回我稍后在同一方法中使用的哈希值 问题是为了测试这个方法,我需要给权限赋予不同的值,但是我找不到方法来存根Rails.application.config_以进行调用 我试过: allowRails::Application.to receive:config_for{{admin:'super_admin'} 但是我遇

我有一个具有以下行的方法:

权限=Rails.application.config\u for:admin\u auth 它读取config/admin_auth.yml文件并返回我稍后在同一方法中使用的哈希值

问题是为了测试这个方法,我需要给权限赋予不同的值,但是我找不到方法来存根Rails.application.config_以进行调用

我试过:

allowRails::Application.to receive:config_for{{admin:'super_admin'} 但是我遇到了一个错误。

试试:

allow_any_instance_of(Rails::Applcation).to ...

尝试:


我认为stubing-configs不是一个好主意,因为很可能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' })

2.根据

设置文件我认为stubing configs不是一个好主意,因为很可能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' })

2.根据

设置文件,这看起来是一个很好的解决方案。问题是,我的对象是一个名为Admins::AuthHelper和allowAdmins::AuthHelper.to接收:权限的帮助程序模块。而{return{admin:'super\u admin'}似乎不起作用。如果它是一个视图帮助程序方法,您可以尝试allowhelper.to接收:权限。和{return admin:'super\u admin'}这看起来是一个很好的解决方案。问题是,我的对象是一个名为Admins::AuthHelper和allowAdmins::AuthHelper.to接收:权限的帮助程序模块。而{return{admin:'super\u admin'}似乎不起作用。如果它是视图帮助程序方法,您可以尝试allowhelper.to接收:权限。和{return admin:'super\u admin'}