0

如果用户名等于第一个路由块之一,我想测试用户是否无效。我现在以这种方式在 rspec 中指定它:

it "is not valid with a excluded username" do
  `bundle exec rake routes`.scan(/\s\/(\w+)/).flatten.compact.uniq.each do |route|
    user.username = route
    user.should_not be_valid
  end
end

问题是,这会减慢我的规格,如果排除每个第一个路线元素,是否有更好的方法来指定?

4

1 回答 1

3

减慢你的规格的事情是bundle exec rake routes,因为它再次加载 rails 环境。为了防止这种情况,您可以从实际 rake 任务中提取显示路线的代码(可以在rails github repo中找到)。通过这些修改,您的规范可能看起来像这样:

it "is not valid with a excluded username" do
  Rails.application.routes.routes.map(&:path).join("\n").scan(/\s\/(\w+)/).flatten.compact.uniq.each do |route|
    # blahblah
  end
end
于 2011-08-31T17:21:56.170 回答