水豚检查单击后是否更改了班级

时间:2019-02-06 09:13:43

标签: capybara rspec-rails

如何在单击按钮后检查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

1 个答案:

答案 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