我一直在撞牆我試圖找出爲什麼這個測試沒有通過Rspec。它在瀏覽器中工作。Capybara :: ElementNotFound在下拉選擇使用Rspec
我有一門課程表,屬於成績對象。在課程的形式,有一個選擇框,讓用戶選擇等級:
<%= form_for [current_user, @course] do |course| %>
...
<%= course.label :grade_id, "What age are the students?" %>
<%= course.collection_select(:grade_id, Grade.all, :id, :grade_level, options ={:prompt => "Select Grade"}) %>
我在Rspec的測試看起來是這樣的:
describe "A workign form" do
before do
sign_in_via_form #signs the user in
visit new_user_course_path(@user) #references @user, defined in Helper
end
let(:course){@user.courses}
context "With valid information" do
it "adds a course" do
expect {
fill_in 'course_name', with:'Course Name'
select 'Fall', from: 'course_course_semester'
select '2012', from: 'course_course_year'
select 'Grade 5', from: 'course_grade_id'
fill_in 'course_summary', with: 'Perfunctory Summary'
fill_in 'course_objectives_attributes_0_objective', with: "an objective"
click_button "submit"
}.to change(course, :count).by(1)
end
end
...#other tests
end #describe block
在我的形式生成的HTML如下:
<label for="course_grade_id">What age are the students?</label>
<select id="course_grade_id" name="course[grade_id]"><option value="">Select Grade</option>
<option value="1">Kindergarten</option>
<option value="2">Grade 1</option>
<option value="3">Grade 2</option>
<option value="4">Grade 3</option>
<option value="5">Grade 4</option>
<option value="6">Grade 5</option>
<option value="7">Grade 6</option>
<option value="8">Grade 7</option>
<option value="9">Grade 8</option>
<option value="10">Grade 9</option>
<option value="11">Grade 10</option>
<option value="12">Grade 11</option>
<option value="13">Grade 12</option>
<option value="14">High School</option>
</select>
讓我知道是否有其他代碼需要;我非常樂意提供它。我的其他選擇框正在工作,但它們也是陣列驅動內容的模型的一部分。但是,在這種情況下,相關模型正在驅動內容。我不確定這是否重要,如果有的話。
你有測試前填充的成績? – dimuch
我不確定......成績在單獨的表格中,成績,這是collection_select中的值來自哪裏。我的考試中沒有明確的成績。我應該添加他們的地方?哪裏? – jflores