gpt4 book ai didi

ruby-on-rails - 如何在请求规范中 stub ApplicationController 方法

转载 作者:数据小太阳 更新时间:2023-10-29 06:20:20 26 4
gpt4 key购买 nike

我需要在 Rspec/capybara 请求规范中 stub current_user 方法的响应。该方法在 ApplicationController 中定义并使用 helper_method。该方法应该只返回一个用户 ID。在测试中,我希望此方法每次都返回相同的用户 ID。

或者,我可以通过在规范中设置 session[:user_id] 来解决我的问题(这是 current_user 返回的内容)...但这似乎不是要么工作。

这两种可能吗?

编辑:

这是我得到的(它不工作。它只是运行正常的 current_user 方法)。

require 'spec_helper'

describe "Login" do

before(:each) do
ApplicationController.stub(:current_user).and_return(User.first)
end

it "logs in" do
visit '/'
page.should have_content("Hey there user!")
end

end

同样无效:

require 'spec_helper'

describe "Login" do

before(:each) do
@mock_controller = mock("ApplicationController")
@mock_controller.stub(:current_user).and_return(User.first)
end

it "logs in" do
visit '/'
page.should have_content("Hey there user!")
end

end

最佳答案

skalee 似乎在评论中提供了正确答案。

如果您尝试 stub 的方法是实例方法(很可能)而不是类方法,那么您需要使用:

ApplicationController.any_instance.stub(:current_user)

关于ruby-on-rails - 如何在请求规范中 stub ApplicationController 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7448974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com