0

リストされたgemを使用してアプリのテストを作成しています。Capybaraをバックボーン(すべてajax)の
テスト例で動作するように設定する方法が見つかりませんでした:

require 'spec_helper' describe "Main" do   describe "GET /" do
    it "displays articles" do
      Article.create!(title:'title',body:'<p>body text</p>')
      visit '/'
      page.should have_content('body text')
    end   
  end 
end

およびテストの出力:

Failures:

  1) Main GET / displays articles
     Failure/Error: page.should have_content('body text')
       expected there to be text "body text" in "Loading..."
     # ./spec/features/main_spec.rb:8:in `block (3 levels) in <top (required)>'

「読み込み中...」は、ビューテンプレートのpreajaxテキストです...

ポイントは、現時点ではこのアプリにジャスミンを使用したくないということです

4

1 に答える 1

3

デフォルトのRack::TestドライバーでCapybaraを実行しているようです。これは、JavaScriptがないことを意味します。Rack :: Testは、処理中のアプリをロードし、CapybaraAPIの背後にあるブラウザーDOMを偽造します。

実際のWebブラウザーでテストを実行するドライバーを使用する必要があります。いくつかの異なるオプションがあります。SeleniumドライバーはCapybaraに付属しており、実際のブラウザー(通常はFirefox)でテストを実行します。その他のオプションは、PhantomJSを使用するPoltergeistやヘッドレスWebKitブラウザーなどの個別のgemで実装されます。

適切なドライバーのセットアップについては、Capybaraのreadmeに説明があります。js記述ブロックにオプションを追加することで、JavaScriptをサポートするドライバーを使用するようにテストのグループを切り替えることができます。例:

describe "Main with JavaScript", :js => true do
  # ...
end
于 2013-03-09T17:49:04.007 に答える