2011-08-31 5 views
0

ユーザ名が最初のルーティングブロックの1つと等しい場合、ユーザが無効であることをテストしたいと思います。 私は、現時点では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 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