2

私が取り組んでいるRailsアプリケーションには、フィールドが入力されておらず、フォームが送信されたときにエラーメッセージを表示するページがあります。

フィールドでのクライアント側の検証はjQueryを使用して行われ、手動でテストするとブラウザから正常に動作します

フィールドのデータがユーザーによって入力されていない場合、フォームの送信はまったく停止されます。

このためのテストを書くための私のオプションは何ですか

  1. Jasmine を見ましたが、javascript 関数自体をテストしたい場合により便利なようです。イベントがページで正しく起動しているかどうかをテストするのには役立ちません。(これについて間違っている場合はお知らせください)

  2. 私はrspecを見て、このようなテストを書きました

    require 'spec_helper'
    describe 'Sample Test Page' do      
    
       it 'should show error when Some Field is not specified' do
         visit  '/sample_page'
         click_button "Submit"  
         page.should have_content 'You forgot to Enter details in Some Field'
      end 
    end
    

しかし、ここで起こっていることは、検証がまったく実行されずにフォームが送信され、エラーが発生することです(アプリケーションが空白値に対してエラーをスローするため)

私の最良の選択肢は何ですか?Railsの哲学でこれをテストするのに役立つ別のツールはありますか?

4

1 に答える 1

2

統合テストで JavaScript をテストする必要がある場合は、明示的に指定して、JavaScript をサポートする Web ドライバーを選択する必要があります。

Webrat を使用した場合、高速ですが JS をサポートしていないため、テストに失敗しました。

Javascript のデフォルトの Web ドライバーは Selenium です。有効にするには、この行を変更するだけです

describe 'Sample Test Page' do 

describe 'Sample Test Page', js: true do

次に、このブロックの下にあるすべてのテストが Selenium で実行されます。テストを実行するための実際のブラウザがポップアップ表示されます。

于 2013-04-28T06:08:58.900 に答える