2012-03-29 10 views
0

をテストし、私は私の全体のテスト環境を再起動し、次のテストはまだ合格、私のroutes.rbをファイルに[「ページ/ホーム」を取得]コメントアウトしている:矛盾RSPEC /カピバラは

it "should contain 'This is a test'" do 
    get 'home' 
    response.body.should have_selector("p") 
end 

私の理解から、 capybaraはメモリ内の「ブラウザ」からrspecテストを実行します。この場合、レールルートが存在しなければなりません!私のルートをコメントアウトした後でも、まだページを読み込むことができます。私が<p>セレクタを削除するとテストが失敗するので、これを知っています。 routes.rbファイルを変更した後、テストスイートを再起動しましたが、違いはありません。

これは、私が通過してはならないテストを通過しているため、テストプロセスの信頼が失われてしまいます。

+0

私たちにフル '_spec.rb'を見せてください。おそらくあなたはどこかに ''家にいる ''と ''(それぞれ) 'を持っています。 –

答えて

1

このフラグメントは、コントローラ仕様にあり、コントローラに直接当てはまるようです。 rspecの最新バージョン2.9.0では、悪いルートでもこの例は失敗しません。経路はコントローラ仕様の範囲外です。

あなたはカピバラさんvisitメソッドを使用する必要があり、要求仕様を、書くことを意図したようです:

# spec/requests/something_spec.rb 
require 'spec_helper' 

describe 'home page' do 

    it "should contain 'This is a test'" do 
    visit '/pages/home' 
    page.should have_content 'This is a test' 
    end 

end 

は、より多くの例についてはcapybara docsを参照してください。 Rspecもrouting specsをサポートしていますが、通常は珍しいルーティングのためにのみ使用します。

+0

非常に興味深い。それで、私は「it」ブロックの中で[home ']をやっているたびに、カピバラを打つことさえないのですか?私はCapybaraと呼ばれるものがあると思っていたが、明らかにRspecだ。これは正しいです?そして、はい、コントローラテストです。 – dingalingchickenwiing

+0

はい、capybaraは 'visit'、' click_on'、 'fill_in'などを追加しています。上にリンクされているカピバラのドキュメントをよく見てください。 –