我的路线中有一些约束,它们使用request.env
上定义的信息:
get "/articles", to: "articles#index", constraints: ->(request) {
request.env["warden"].user.reporter?
}
我想使用RSpec的#route_to
帮助程序来测试此约束:
it "routes to /articles" do
expect(get: "/articles").to route_to("articles#index")
end
问题是,我找不到在测试中设置request.env["warden"]
的方法。我只想测试/articles
是否在某些约束条件下匹配,所以我认为使用像capybara这样的整体集成规范会显得过分。 但这是测试路线中约束的正确方法吗?
甚至可以以某种方式对request.env
进行存根处理吗?我调查了建立请求的https://github.com/mtsmfm/railstest/blob/master/actionpack/lib/action_dispatch/testing/assertions/routing.rb#L180。 但是看起来测试请求对象没有任何外部参数。