资产预编译后,RSpec / Capybara测试不会通过
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了资产预编译后,RSpec / Capybara测试不会通过相关的知识,希望对你有一定的参考价值。
我使用RSpec和Capybara测试我的应用程序时遇到问题。测试正在通过,直到我没有使用rails assets:precompile
。
其中一个问题是Capybara函数click_button "Button"
调用提交按钮。何时使用一次没有任何反应。我使用它两次时问题解决了:
click_button "Button"
click_button "Button"
在这种情况下,测试再次通过。我不知道rails assets:precompile
被破坏了什么。
答案
运行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"
以上是关于资产预编译后,RSpec / Capybara测试不会通过的主要内容,如果未能解决你的问题,请参考以下文章
RAILS_ENV=生产轨道资产:预编译不适用于 RSpec
清理测试数据库,仅使用RSPEC和Capybara运行测试生成的数据
使用 RSpec + capybara-webkit 检查 JS 框是不是存在