为RSpec的#route_to设置请求环境

时间:2019-10-25 07:17:19

标签: ruby-on-rails rspec routing

我的路线中有一些约束,它们使用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但是看起来测试请求对象没有任何外部参数。

0 个答案:

没有答案