【问题标题】:Cannot get 'admin-delete-user-account' test to pass无法通过“admin-delete-user-account”测试
【发布时间】:2020-04-30 13:16:21
【问题描述】:

我创建了一个功能,管理员可以在其中删除仪表板上的用户帐户。此功能在实践中成功运行。

(我已通过管理仪表板删除了用户帐户,并已通过 rails 控制台确认。)

但是,我无法通过 rspec 测试来通过测试此功能。它总是返回用户帐户仍然存在。

网站上的表格:

<%= form_for @user, url: admin_user_path(@user), data: { confirm: 'Are you sure?' }, html: { method: :delete } do |f| %>
  <%= f.submit "Delete account", class:"danger", data: { test: "delete-user-account" } %>
<% end %>

测试:

require 'rails_helper'

RSpec.feature 'deleting users' do
  let!(:admin) { create :admin }

  scenario 'successfully deleted an external user account' do
    sign_in admin, scope: :admin

    user = create(:user)
    visit admin_user_path(user)

    find('[data-test="delete-user-account"]').click

    visit root_path
    expect(user).not_to be_present
  end
end

【问题讨论】:

    标签: ruby-on-rails rspec rspec-rails


    【解决方案1】:

    因为您需要接受“您确定吗?”的警报

    如果你使用 Selenium API,你可以这样做:

    find('[data-test="delete-user-account"]').click
    
    page.driver.browser.switch_to.alert.accept
    
    visit root_path
    expect(user).not_to be_present
    

    【讨论】:

    • 谢谢!我们确实有 selenium-webdriver gem 作为我们的驱动程序,但它返回 undefined method 'switch_to' for #&lt;Capybara::RackTest::Browser:####&gt;
    • 这是整个错误:1) deleting users successfully deleted an external user account Failure/Error: page.driver.browser.switch_to.alert.accept NoMethodError: undefined method `switch_to' for #&lt;Capybara::RackTest::Browser:0x00007fbc4a501050&gt; # ./spec/features/internal/user_management/deleting_users_spec.rb:19:in `block (2 levels) in &lt;main&gt;'
    • 我们正在使用chromedriver,这需要selenium/webdriver
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2022-01-09
    • 1970-01-01
    • 2012-06-08
    • 2019-06-05
    • 1970-01-01
    相关资源
    最近更新 更多