我有一个模态成分,在模态里面我有一个形式。模态使用StimulusJs显示或隐藏。当我使用turbo_stream
渲染模态组件时,它执行刺激控制器并显示它。然而,当我试图使用rspec测试它时,我看到内容通过turbo_stream
加载,但它并没有直观地显示出来。我总是得到以下错误:
Unable to find visible field "user[username]" that is not disabled within #<Capybara::Node::Element tag="div" path="/HTML/BODY[1]/TURBO-FRAME[1]/DIV[1]/DIV[3]/DIV[1]/DIV[3]">
请注意,内容不会出现在页面加载中,只有当单击按钮时才会加载模态组件。我知道这是有效的,因为在单击按钮后,我有一个expect
:
expect(page).to have_css("[data-controller='modal']")
但是当你想逃跑的时候
fill_in("Username", with: "testing01")
我已经尝试了不同的变化,如find(#).set()
,但总是与错误的元素是不可见的。
describe "Username modal", type: :system do
it "should change the username" do
visit profile_path
expect(page).to_not have_css("[data-controller='modal']")
page.find("#change-username").click
expect(page).to_not have_css("[data-controller='modal']")
fill_in("Username", with: "testing01") # <--- Error mentioned above
page.find("#submit-change-username").click
expect(page).to have_text("Username changed!")
end
end
这让我认为StimulusJS没有运行。我需要做些什么来确保它在rspec中运行?
1条答案
按热度按时间atmip9wb1#
为了将来的参考,我意识到我需要为测试预编译资产以获取最新的更改。我跑完了:
rails assets:clobber assets:precompile
。然后,我重新启动服务器,运行测试增益,它的工作。