如果用户名等于第一个路由块之一,我想测试用户是否无效。 我现在用这种方式在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
问题是,这减慢了我的规格,是否有更好的方法来规范是否排除了每个第一个路径元素?
答案 0 :(得分: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