Ruby on rails RSpec/水豚试验不';在资产预编译之后不能通过

Ruby on rails RSpec/水豚试验不';在资产预编译之后不能通过,ruby-on-rails,rspec,capybara,rspec-rails,Ruby On Rails,Rspec,Capybara,Rspec Rails,我在使用RSpec和Capybara测试我的应用程序时遇到问题。测试一直通过,直到我没有使用rails资产:precompile 其中一个问题是水豚功能点击按钮“button”调用提交按钮。当使用一次时,什么也不会发生。当我使用它两次时,问题就解决了: click_button "Button" click_button "Button" 在这种情况下,测试将再次通过。我不知道什么rails资产:预编译被破坏了。运行rails资产:预编译有时会导致rails不再检测资产中的更改,并且不会在测试

我在使用RSpec和Capybara测试我的应用程序时遇到问题。测试一直通过,直到我没有使用
rails资产:precompile

其中一个问题是水豚功能
点击按钮“button”
调用提交按钮。当使用一次时,什么也不会发生。当我使用它两次时,问题就解决了:

click_button "Button"
click_button "Button"

在这种情况下,测试将再次通过。我不知道什么
rails资产:预编译被破坏了。

运行
rails资产:预编译
有时会导致rails不再检测资产中的更改,并且不会在测试环境中动态重新编译它们。您通常可以通过运行
railsassets: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"

不幸的是,情况仍然如此。我尝试了
sleep5
,甚至
sleep10
。当我尝试在按钮点击之前使用
sleep30
,我控制并手动点击它时,一切正常。一切看起来都是正确的。我不知道为什么Capibara在点击这个按钮时有问题。@Damian如果睡眠不能解决问题,那么很可能与按钮和点击的位置有关(或者你没有关闭资产,正在使用旧的损坏资产)——它是一个标准按钮还是附加了JS行为?它有其他元素重叠吗?你在水豚身上使用什么驱动程序?你有没有尝试过破坏这些资产?当你说“控制”时,你的确切意思是什么(例如,你只是移动鼠标并单击按钮,还是调整窗口大小,单击其他地方以获得焦点,然后单击按钮等)此按钮没有附加JS。我正在使用“SeleniumWebDriver”。是的,我试过
rails资产:clobber
。“控制”我的意思是当出现带有测试的浏览器窗口时,我手动点击按钮。一般来说,此视图中的所有内容看起来都是正确的。@Damian然后您需要提供您所使用的所有内容的版本、按钮周围的实际HTML、周围的测试代码,以及可能的屏幕截图,以便任何人都能够诊断您的问题-