如何在单击按钮后检查css类是否已添加到div中?
我有一个带有“ btn-success”类和模式形式的按钮,默认情况下没有“ show”类,但是单击按钮后,“ show”类被添加到模式中。
我的测试:
it 'shows up popup with form' do
modal_window = page.find('#data-modal')
expect(modal_window[:class]).not_to include('show')
page.find('.btn-success').click
expect(modal_window[:class]).to include('show')
end
我的宝石文件:
group :development, :test do
gem 'rspec-rails', '~> 3.8'
gem 'factory_bot_rails'
gem 'rails-controller-testing'
gem 'webmock'
gem 'capybara'
gem 'selenium-webdriver'
gem 'rails-controller-testing'
end
答案 0 :(得分:0)
确切地执行您要的最简单的解决方案就是
it 'shows up popup with form' do
expect(page).not_to have_css('#data-modal.show')
page.find('.btn-success').click
expect(page).to have_css('#data-modal.show')
end
但是,您实际上不应该在功能测试中测试特定类的存在。相反,您应该测试模态是否实际出现。由于这是JS驱动的行为,因此,这意味着确保测试正在使用具有JS功能的驱动程序运行,确保没有将Capybara.ignore_hidden_elements
设置为false,然后执行
it 'shows up popup with form' do
# Should initially be hidden so won't be found
expect(page).not_to have_css('#data-modal')
page.find('.btn-success').click
# Should now be found
expect(page).to have_css('#data-modal')
end