调用RSpec睡眠

时间:2016-04-25 19:43:08

标签: ruby selenium rspec capybara

我正在编写功能测试,正在尝试测试编辑操作。这对我来说有点奇怪,因为当我正常运行RSpec时它没有看到我的期望,但是当我使用save_and_open_page命令时,它表明我所期待的实际上是在浏览器中。我认为这是一个硒问题,但我对rspec很新,我不确定。我被建议使用"睡眠"或"暂停"但我不确定如何使用这些方法,我无法找到任何好的文档。我想知道是否有人可以在我当前的代码上向我展示一种有效的方法吗?

TEST

require "rails_helper"

RSpec.feature "Edit 'Bounce Back' Message", :type => :feature do
given!(:group) { Group.create!(name: "Group A", response: "You are now    subscribed for updates") }

scenario "Staff can see the response messages" do
visit "/groups"

  user = FactoryGirl.create(:user)
  fill_in "Email", with: user.email
  fill_in "Password", with: user.password
  click_button "Sign in"

  expect(page).to have_content("You are now subscribed for updates")
  expect(page).to have_content("Group a")
 end
scenario "Staff can edit the response messages" do
  visit "/groups/#{group.id}/edit"

  user = FactoryGirl.create(:user)
  fill_in "Email", with: user.email
  fill_in "Password", with: user.password
  click_button "Sign in"

  expect(page).to have_content("You have now subscribed for updates")
 end
end 

我希望这是足够的信息,如果您需要更多,请告诉我。谢谢! 我也尝试过使用rspec_wait,但它仍然发送错误。这是

enter image description here

 <div class="container text-center">
  <div class="row">
  <div class="col-lg-8 col-lg-offset-2 well">
     <%= form_for @group do |form| %>
       <div class="form-group">
         <%= form.label :body, "Edit The Response:", class: "message_label"%>
         <%= form.text_field :response, class: "form-control", placeholder: "New things are happening!" %>
       </div>
       <%= form.submit "Update", class: "btn btn-primary" %>
    <% end %>
  </div>
 </div>
</div>

1 个答案:

答案 0 :(得分:1)

这个问题目前接受的答案是错误的。没有必要将rspec-wait与Capybara匹配器一起使用,因为它们已经内置了等待/重试行为。您可以调整等待/重新使用Capybara.default_max_wait_time或传递wait: <time in seconds>的时间长度匹配器的选项。

通过阅读问题和附图,我假设&#34;工作人员可以看到响应消息&#34;测试正在通过但是&#34;工作人员可以编辑响应消息&#34;测试失败。如果是这样的话,最有可能的原因是因为在编辑页面上你已经订阅了更新&#34; string实际上是字段(文本框等)的内容,而不是页面的文本内容。 have_content用于检查页面上的文本节点内容,以测试具有给定值的字段,您将使用类似

的字段
expect(page).to have_field('Response', with: 'You have now subscribed for updates')

假设有一个与该字段相关联的标签,文本为&#34;响应&#34;如果不是,您可以传递字段,名称等的ID,或者从Capybara 2.7开始,您可以传递零和它只会查找具有给定值的任何字段 - 所有这些都完全取决于您需要测试的内容。

expect(page).to have_field(nil, with: 'You have now subscribed for updates')