1

我正在尝试测试最终应该出现在用户主页上的消息。它在后台进程运行时生成(使用 Sidekiq)。

我运行的测试是:

...

it "should click on the training resource link and view message on home page", :driver => :poltergeist do
  visit skill_path(@skill)

  training_resource = @skill.training_resources.first

  click_link(training_resource.name)

  #*** Should wait here while background process runs and creates the message

  visit user_profile_path(@user)

  page.should have_css("h4", text: "Some training resource message")
  ...
end

有没有办法重新检查用户个人资料页面(或刷新)几次,让 Sidekiq 有时间处理后台任务?如果消息还没有出现,也许我可以重新访问该页面?

这不是 ajax 更新。后台进程完成后,内容才会显示在个人资料页面上。

谢谢!

为澄清有关 ajax 进行了编辑。

4

1 回答 1

0

Capybara 将重新检查元素的存在 2 秒,直到它放弃并抛出错误。请参阅文档摘录(https://github.com/jnicklas/capybara

如果单击 foo 链接会触发异步过程,例如 Ajax 请求,该请求完成后会将 bar 链接添加到页面,单击 bar 链接预计会失败,因为该链接尚不存在。然而,Capybara 足够聪明,可以在短时间内重试查找链接,然后放弃并抛出错误。下一行也是如此,它在页面上查找内容 baz;它将在短时间内重试查找该内容。您可以调整此时间段的长短(默认为 2 秒)

您可以通过调整以下设置来增加此值:

Capybara.default_wait_time = 5
于 2013-09-09T19:37:53.837 回答