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

问题描述 投票:0回答:1

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

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

click_button "Button"
click_button "Button"

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

ruby-on-rails rspec capybara rspec-rails
1个回答
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"
© www.soinside.com 2019 - 2024. All rights reserved.