RSpec / Capybara测试在资产预编译后不会通过

时间:2018-04-19 12:23:20

标签: ruby-on-rails rspec capybara rspec-rails

我在使用RSpec和Capybara测试我的应用时遇到问题。测试正在通过,直到我没有使用rails assets:precompile

其中一个问题是Capybara函数click_button "Button"调用了提交按钮。何时使用一次没有任何反应。当我两次使用它时,问题就解决了:

click_button "Button"
click_button "Button"

在这种情况下,测试再次通过。我不知道rails assets:precompile被宠坏了什么。

1 个答案:

答案 0 :(得分:0)

运行rails assets:precompile有时会导致Rails不再检测到资产更改的状态,并且不会在测试环境中动态重新编译它们。您通常可以通过运行rails assets:clobber来解决此问题。

至于需要点击两次按钮,这通常意味着你在一些需要JS完全加载之前尝试点击。您可以通过休眠几秒钟然后单击按钮来验证。

sleep 5
click_button "Button"

为了正确解决这个问题,您需要在页面准备好使用之前检查页面上看不到的内容。

expect(page).to have_css('some_selector.ready`) # verify element, class name on element, etc that isn't there until page is ready
click_button "Button"
相关问题