0

私は自分が書いている小さな Web アプリをテストするために Capybara を使用しています。選択から正しい項目を選択することを拒否します。コードは次のとおりです。

  before do
    fill_in 'Assignment', with: "blah blah blah"
    select student.name, from: "assignment[student_id]"
  end

「from」フィールドでサポートされているすべての形式を試しました。ID、名前、およびラベル テキストを使用して、正しい要素を選択しようとしました。テストで Rails サーバーを起動し、コンソールでテストの手順を手動で実行しました。私が何をしても、カピバラはキックバックします:

cannot select option, no option with text 'John Doe' in select box 'assignment[student_id]'

前に述べたように、テスト環境で Rails サーバーを起動し、テストで行ったのと同じ方法で手動でユーザーをデータベースに追加しました。私は、選択ボックスの「課題[学生]」に「John Doe」というテキストを含むオプションが実際にあるという事実を 100% 確信しています。これは、select メソッドを間違って使用しているに違いないと私に信じさせます。誰かが私を啓発できますか?

4

2 に答える 2

0

問題は選択コードにはありませんでした。FactoryGirl の let がどのように機能するか忘れました。Factory Girl によって作成された User の関係を介して build を呼び出し、let を介してその結果を学生に割り当てようとしました。残念ながら、 let は怠惰なため、必要なときに作成されていませんでした。そのため、基本的に、ページは学生オブジェクトが作成される前に呼び出されていました。let ステートメントのコードを before に移動し、let と User.students.first を使用して学生を割り当てました。

于 2013-05-31T21:24:00.987 に答える