0

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