2011-08-31 72 views
0

我想測試一個用戶在用戶名等於第一個路由塊之一時是無效的。 我符合規範它的RSpec目前是這樣的:Rails路由驗證排除

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 

的是,這會減慢我的規格,是否有更好的方式,如果每月的第一個路由元素被排除在外的規格?

回答

3

減慢你的規格的東西是bundle exec rake routes,因爲它再次加載rails環境。爲防止出現這種情況,您可以提取顯示實際耙路任務路線的代碼(可在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