我的應用程序有很多不同的地方,當用戶點擊按鈕/鏈接/ div時,我通過調用ajax函數來更新數據庫。我需要在測試中包含這些功能,但我對水豚的瞭解還不夠。在Capybara測試期間調用Coffeescript
下面是我想測試的一個div的示例,關聯的ajax調用以及我想要通過的測試。我應該補充一點,我正在通過Cloud9 IDE進行構建,以防有所作爲。
查看
<% @seminar.students.order(:last_name).in_groups_of(6).each do |group| %>
<div class="row">
<% group.each do |student| %>
<% if student %>
<% this_ss = @seminar.seminar_students.find_by(:user => student) %>
<% if this_ss.present %>
<% thisClass = "col-md-2 seat clickySeat" %>
<% thisText = "Present" %>
<% else %>
<% thisClass = "col-md-2 seat clickySeat absent" %>
<% thisText = "Absent" %>
<% end %>
<div class = "<%= thisClass %>" id="<%= this_ss.id %>" name="ss_<%= this_ss.id %>">
<%= student.first_plus_init %><br/>
<p class="presentTag"><%= thisText %></p>
</div>
<% end %>
<% end %>
</div>
<% end %>
CoffeeScript的
if $('.clickySeat').length > 0
$('.clickySeat').on "click", ->
this_tag = $(this).find(".presentTag")
seminar_student_id = $(this).attr('id')
url = '/seminar_students/'+seminar_student_id
if this_tag.text() == "Absent"
attendance = true
$(this).removeClass("absent")
this_tab.text("Present")
else
attendance = false
$(this).addClass("absent")
this_tab.text("Absent")
$.ajax
type: "PUT",
url: url,
dataType: "json"
data:
seminar_student:
present: attendance
測試
test "attendance with click" do
@ss = @student_3.seminar_students.find_by(:seminar => @seminar)
assert @ss.present
capybara_login(@teacher_1)
click_on("desk_consult_#{@seminar.id}")
click_on("#{new_consultancy_button_text}")
find("##{@ss.id}").click
assert_not @ss.present
click_on("Create Desk Consultants Groups")
end
在開發和生產, divs和ajax正在努力切換數據庫中被標記爲不存在/存在的學生。但在測試中,assert_not @ ss.present行失敗。這是我試圖解決的模式:我的水豚測試都沒有調用任何JavaScript。
我已閱讀了幾個類似的問題和相關文章。我嘗試了迄今爲止閱讀過的所有建議,例如添加selenium-webkit gem,以便可以使用Capybara.javascript-driver =:selenium這一行。迄今爲止我遇到的解決方案都沒有爲我工作。
非常感謝您的任何見解。
您不會告訴我們您想要通過的測試實際失敗。另外,當您設置「Capybara.javascript_driver」時,它只會被您指定使用支持javascript的驅動程序的測試使用。請參閱 - https://github.com/teamcapybara/capybara#selecting-the-driver。您應該能夠判斷它是否使用硒,因爲它通常會打開Firefox或Chrome的實例(具體取決於您的配置)。 –
啊哈。好點子。測試在線assert_not @ ss.present上失敗。在開發和生產中,單擊div更新數據庫以在缺席和現在之間切換學生。在測試中,沒有任何反應。 –
這是我試圖在任何地方修正的模式:我的水豚測試都沒有調用任何JavaScript。 –