gpt4 book ai didi

ruby-on-rails - 取消选中复选框仅不适用于 rspec/capybara 测试

转载 作者:行者123 更新时间:2023-12-04 07:35:32 25 4
gpt4 key购买 nike

我有一个包含 4 个复选框的嵌套表单。目前,一切都在浏览器中运行,但我无法让 capybara 测试取消选中复选框并保存。

使用 Rails 4.2.2 和最新版本的 capaybara-webkit 和 rspec

settings.html.erb

  <%= f.fields_for :preferences do |f| %>
<div class="email-notifications-holder">
<div class="email-holder">
<%= f.label :new_match, "Getting a new match each week" %>
<%= f.check_box :new_match, class: "checkbox new_match_email" %>
</div>
<div class="email-holder">
<%= f.label :match_reminder, "New matches Thursday reminder", class: "match_reminder_email" %>
<%= f.check_box :match_reminder, default: true, class: "checkbox" %>
</div>
<div class="email-holder">
<%= f.label :accepted_match, "A Glassbreakers accepted a match", class: "accepted_match_email" %>
<%= f.check_box :accepted_match, default: true, class: "checkbox" %>
</div>
<div class="email-holder">
<%= f.label :new_message, "Received a new message", class: "new_message_email" %>
<%= f.check_box :new_message, default: true, class: "checkbox" %>
</div>
</div>
<% end %>

edit_account_spec.rb
  it "allows the user to opt out of new match email", :js do
user = create(:user)
preferences = create(:preference, user: user)
sign_in(user)

visit edit_user_path(user)
click_tab(t("edit_user.tabs.settings"))

find(:css, "#user_preferences_attributes_0_new_match").set(false)

within "#button-container" do
page.find('.save.main-save-button-edit').trigger('click')
end



visit edit_user_path(user)
click_tab(t("edit_user.tabs.settings"))

user.preferences.reload
new_match_email_checkbox = find(".new_match_email")
expect(new_match_email_checkbox.checked?).to be_falsey
end

我试过点击它,取消选中它,选中它,触发点击它,将它包裹在一个块内,重新加载数据库等。
    new_match_email_checkbox = find(".new_match_email")
within(".email-notifications-holder") do
page.uncheck('Getting a new match each week')
end

new_match_email_checkbox.set(false)

最佳答案

现在,当您保存用户的个人资料时,您必须保存板载技能,否则在您尝试单击保存按钮时会抛出错误消息。

用户 Controller 的一部分

  def update
if update_current_user?(user_params)
redirect_to user_path(current_user)
else
flash["notice"] =
"Please choose 3 industries, fields and years of experience."
redirect_to edit_user_path(current_user)
end
end

private

def update_current_user?(update_params)
skills_chosen?(update_params[:user_onboard_skills_attributes]) &&
current_user.update(update_params)
end

使用 save_and_open_page,错误警报没有出现,所以不清楚发生了什么。我能够通过在运行测试时跟踪日志来调试它:
tail -f log/test.log

关于ruby-on-rails - 取消选中复选框仅不适用于 rspec/capybara 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31195553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com