2016-11-04 20 views
1

私は、javascriptとjqueryを使用して入力フィールドに値を表示するWebページゲームを持っています。私がテストしようとしている値はページに表示されます。しかし、要素を調べると、その値はhtmlには表示されません。ここでcapybaraはページ上で値を見つけることができません

は値を設定し、いくつかのJSコードです:

function updateTotal(){ 
     $('#edit-game-result').val(game.totalScore); 
     } 

そしてここでは、HTMLの入力フィールドです:

<input type="text" id="edit-game-result" size="10" maxlength="3" class="form-text" readonly/> 

私は次のようにカピバラのテストを試してみました:

(find_fieldを期待します( 'edit-game-result')。value).to eq 10

このテストでは、 UT: が期待さ:10だ:

nilを私はこれが原因これに何とかだと思う: Is the HTML is View Source different from the HTML in Inspect Element? が、私はカピバラが値を読むようにする方法を見つけることができません。

また、これは、関連するかもしれない: http://ahmednadar.github.io/12/09/2013/overwrite-how-Capybara-ignores-hidden-elements/

私はフィールドテストが実行されたときに10の値を持っていると信じています。しかし私はカピバラのテストでその価値にアクセスすることができません。

なぜ動作していないのかを理解しているカピバラテストを見つけてもらえますか?

答えて

0

問題は、要素を見つけてその値をチェックしているため、値が一致するのを待たずに済みます。代わりに、カピバラは、値が変更されるまで待機するカピバラ待っ/再試行の動作を使用します

expect(page).to have_field('edit-game-result', with: '10') 

を提供マッチャーを使用する必要があります。

+0

ご返信ありがとうございます。私はそれを試みたが、得た: '失敗/エラー:期待(ページ).to have_field( '編集 - ゲーム - 結果'、: '10') は、フィールド" edit-game-result " "マッチはなかった。すべてのフィルタではなくセレクタに一致する ""も見つかりました。 – jeebee

+0

@jeebeeそれをチェックするか、ページに表示されないとき、フィールドの値はCapybara.default_max_wait_time秒以内に '10'になりません。 'visible:false'オプションを' have_field'に渡すことで目に見えない要素を確認できますが、実際にはテストで目に見えない要素をチェックすることに頼るべきではありません。それ以外はテストの残りの部分を表示するので、あなたが実際に行っていることを確認することができます –

+0

こんにちはトーマス 私のコードは https://github.com/glynester/bowling-challenge/blob/last_frame/spec/ features/game_play_spec.rb "visible:false"を追加するなど、多くの組み合わせを試しましたが、うまくいきませんでした。私はcapybaraのspec_helper.rbに10秒の待ち時間を追加しました。 ありがとうございます。 – jeebee

関連する問題