我在使用RSpec和Capybara测试我的应用时遇到问题。测试正在通过,直到我没有使用rails assets:precompile
。
其中一个问题是Capybara函数click_button "Button"
调用了提交按钮。何时使用一次没有任何反应。当我两次使用它时,问题就解决了:
click_button "Button"
click_button "Button"
在这种情况下,测试再次通过。我不知道rails assets:precompile
被宠坏了什么。
答案 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"