Ruby on rails 水豚没有通过简单的表单登录
我写的一个测试在Chrome中运行正常,但我的测试套件却不是这样 以下是我的测试:Ruby on rails 水豚没有通过简单的表单登录,ruby-on-rails,ruby,rspec,capybara,simple-form,Ruby On Rails,Ruby,Rspec,Capybara,Simple Form,我写的一个测试在Chrome中运行正常,但我的测试套件却不是这样 以下是我的测试: require 'rails_helper' describe 'user can sign in' do let(:customer) { FactoryGirl.create(:customer) } it 'allows users to sign in directly' do visit new_customer_session_path fill_in 'Email', wi
require 'rails_helper'
describe 'user can sign in' do
let(:customer) { FactoryGirl.create(:customer) }
it 'allows users to sign in directly' do
visit new_customer_session_path
fill_in 'Email', with: customer.email
fill_in 'Password', with: customer.password
click_button('Sign in')
expect(page).to have_content('Signed in successfully')
end
it 'allows users to sign in via the home page' do
visit root_path
click_link('Sign in')
fill_in 'Email', with: customer.email, match: :prefer_exact
fill_in 'Password', with: customer.password
click_button('Sign in')
expect(page).to have_content('Signed in successfully')
end
it 'only when valid fields are entered' do
visit root_path
click_link('Sign in')
click_button('Sign in')
expect(page).to have_content("Invalid email or password")
end
end
所有这些都会导致:
Failure/Error: expect(page).to have_content('Signed in successfully')
expected to find text "Signed in successfully"
或
我觉得这很奇怪,所以当我尝试在开发模式下登录时,我看到我的flash消息如下:
我的表单如下所示:
<%= simple_form_for(resource,
as: resource_name,
url: session_path(resource_name),
html: { class: 'form-horizontal' },
wrapper: :horizontal_form,
wrapper_mappings: {
check_boxes: :horizontal_radio_and_checkboxes,
radio_buttons: :horizontal_radio_and_checkboxes,
file: :horizontal_file_input,
boolean: :horizontal_boolean
}) do |f| %>
<%= f.input :email, reqiured: true, autofocus: true, placeholder: "Email" %>
<%= f.input :password, required: true, autofocus: true, placeholder: "Password" %>
</div>
</div>
<div class="login-c2">
<div class="logmargfix">
<div class="chpadding50">
<div class="alignbottom">
<%= f.button :submit, "Sign in", class: 'btn-search4' %>
</div>
<div class="alignbottom2">
<%= f.input :remember_me, as: :boolean if devise_mapping.rememberable? %>
</div>
</div>
</div>
<% end %>
对于第一个示例,请尝试这样填写表单
填写“用户电子邮件”…填写“用户密码”
。不过,您必须检查字段,我假设这就是生成的内容。另外,为了进行健全性检查,在登录后,请执行expect(第页)。查看内容(“电子邮件”)
以查看您所在的页面。@PNY谢谢您的评论。我试着将一个测试改为填写“客户电子邮件”
,但这并没有改变任何事情。我认为,登录
按钮点击不正确。通过简单表单为该按钮生成的HTML是上面的
,您可以单击按钮(“登录”)
。我相信为了让水豚点击一个带有特定值的按钮
,当我将其更改为justclick
时,你需要执行click('Sign in')
,我得到失败/错误:click('Sign in')名称错误:未定义的方法
click'for#`你能找到它吗<代码>查找按钮(“登录”)
<%= simple_form_for(resource,
as: resource_name,
url: session_path(resource_name),
html: { class: 'form-horizontal' },
wrapper: :horizontal_form,
wrapper_mappings: {
check_boxes: :horizontal_radio_and_checkboxes,
radio_buttons: :horizontal_radio_and_checkboxes,
file: :horizontal_file_input,
boolean: :horizontal_boolean
}) do |f| %>
<%= f.input :email, reqiured: true, autofocus: true, placeholder: "Email" %>
<%= f.input :password, required: true, autofocus: true, placeholder: "Password" %>
</div>
</div>
<div class="login-c2">
<div class="logmargfix">
<div class="chpadding50">
<div class="alignbottom">
<%= f.button :submit, "Sign in", class: 'btn-search4' %>
</div>
<div class="alignbottom2">
<%= f.input :remember_me, as: :boolean if devise_mapping.rememberable? %>
</div>
</div>
</div>
<% end %>
<%= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<div class="form-inputs">
<%= f.input :email, required: false, autofocus: true %>
<%= f.input :password, required: false %>
<%= f.input :remember_me, as: :boolean if devise_mapping.rememberable? %>
</div>
<div class="form-actions">
<%= f.button :submit, "Sign in" %>
</div>
<% end %>
<%= render "customers/shared/links" %>