Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 水豚没有通过简单的表单登录_Ruby On Rails_Ruby_Rspec_Capybara_Simple Form - Fatal编程技术网

Ruby on rails 水豚没有通过简单的表单登录

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

我写的一个测试在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', 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是上面的
,您可以
单击按钮(“登录”)
。我相信为了让水豚点击一个带有特定
值的按钮
,当我将其更改为just
click
时,你需要执行
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" %>