3

初心者で、Ruby on Railsを学んでいますが、テストを機能させるのに問題があります。rspecとcapybaraを使用しています。問題は、Capybaraがページをレンダリングしていないか、適切なページに到達していないことです。$ railsを実行すると、ブラウザでページが正しく開きます。しかし、save_and_open_pageでテストすると、htmlは空になります。

私のスペック

以下は私の最初のPagesController仕様です。

 require 'spec_helper'

describe PagesController do
describe "GET 'home'" do
    it "returns http success" do
      visit pages_home_path
      save_and_open_page #at this point it opens the a blank html page
    end
  end
end

私のコントローラーの仕様、これは空白のページを開きます。

Pagescontroller仕様の代替構文を試しました。

require 'spec_helper'

describe PagesController do

  describe "GET 'home'" do
    it "returns http success" do
       get :home           
       response.should render_template('home')
       response.should have_content("home") #it fails here
     end
  end
end

これは、コンソールの障害で次のエラーを示しています。

1)PagesController GET'home'はhttpの成功を返します失敗/エラー:response.should have_content( "home")は "#"にテキスト "home"があると予想されます#。/ spec / controllers / pages_controller_spec.rb:10:in ` 'のブロック(3レベル)

1.91秒で終了1例、1失敗

その他の構成:

spec_helperに次の行を追加しましたが、残りは変更されていません。

require 'capybara/rspec'

*ジェムファイル:*

    gem 'rails', '3.1.0'
    group :development, :test do
              gem 'autotest-rails'
      gem 'sqlite3'
      gem 'ruby-debug19', :require => 'ruby-debug'
      gem 'cucumber-rails', :require => false
      gem 'cucumber-rails-training-wheels'
      gem 'database_cleaner'
      gem 'capybara'
      gem 'launchy'
      gem 'rspec-rails'
      gem 'simplecov'
      gem 'rspec-core', '2.8.0'
    end
    group :assets do
      gem 'therubyracer'              
      gem 'sass-rails', "  ~> 3.1.0"
      gem 'coffee-rails', "~> 3.1.0"
      gem 'uglifier'
    end

    gem 'jquery-rails'
    gem 'haml'

Webratをインストールしておらず、Gemリストにないことを確認しました。ご協力ありがとうございました。

4

2 に答える 2

2

ドキュメントから、スペックにタグを付けるか、フォルダfeatureに入れる必要があるようです。spec/features

私にとっては、何もレンダリングしないというコントローラーテストのデフォルトの動作があるようです。これをオーバーライドすることもできますが、統合テストをコントローラーテストとは別にする方がよいと思います。

于 2012-11-26T19:49:48.563 に答える
0

2番目のテストはリクエストを行っているようですが、コンテンツが「response」ではなく「response.body」にあるため、コンテンツが見つかりません。次のようにしてみてください。

it "returns http success" do
   get :home           
   response.should render_template('home')
   response.body.should have_content("home") 
 end
于 2012-11-26T12:32:24.410 に答える