gpt4 book ai didi

ruby-on-rails - RSpec Rails 登录过滤器

转载 作者:行者123 更新时间:2023-12-04 14:42:20 26 4
gpt4 key购买 nike

我最近开始在我的 Rails(3.0.8) 应用程序中使用 rspec-rails(2.6.1)。我已经习惯了 Test::Unit,而且我似乎无法让过滤器为我的测试方法工作。我喜欢尽可能保持干燥,所以我想设置一个过滤器,我可以调用任何测试方法,该方法将在调用测试方法之前以 Authlogic 用户身份登录。我尝试通过使用 RSpec filter 来完成此操作在 spec_helper.rb 中:

config.before(:each, :login_as_admin => true) do 
post "/user_sessions/create", :user_session => {:username => "admin", :password => "admin"}
end

然后我在相应的测试方法中使用它(在本例中为 spec/controllers/admin_controller_spec.rb):

require 'spec_helper'

describe AdminController do
describe "GET index" do
it("gives a 200 response when visited as an admin", :login_as_admin => true) do
get :index
response.code.should eq("200")
end
end
end

但是,当我运行 rspec spec 时出现此错误:

Failures:

1) AdminController GET index gives a 200 response when visited as an admin
Failure/Error: Unable to find matching line from backtrace
RuntimeError:
@routes is nil: make sure you set it in your test's setup method.

布莱克。我可以每次测试只发送一个 HTTP 请求吗?我还尝试删除我的 authenticate_admin 方法(在 config.before block 内),但没有任何运气。

最佳答案

不幸的是,目前无法在全局定义的 before Hook 中执行您要执行的操作。原因是 before 钩子(Hook)按照它们注册的顺序执行,而那些在 RSpec.configure 中声明的钩子(Hook)在 rspec-rails 之前注册 内部注册,设置controller、request、response等

此外,这已报告给 https://github.com/rspec/rspec-rails/issues/391 .

关于ruby-on-rails - RSpec Rails 登录过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6394414/

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