ruby-on-rails – 测试视图编辑表单时Rspec失败

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 测试视图编辑表单时Rspec失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在处理我的第一个rails应用程序,并且两个生成的测试没有通过:
Failures:

  1) gardens/edit renders the edit garden form
     Failure/Error: assert_select "inputgarden_name[name=?]","garden[name]"

     Minitest::Assertion:
       Expected at least 1 element matching "inputgarden_name[name="garden[name]"]",found 0..
       Expected 0 to be >= 1.
     # ./spec/views/gardens/edit.html.haml_spec.rb:20:in `block (3 levels) in <top (required)>'
     # ./spec/views/gardens/edit.html.haml_spec.rb:18:in `block (2 levels) in <top (required)>'

  2) gardens/new renders new garden form
     Failure/Error: assert_select "inputgarden_name[name=?]",found 0..
       Expected 0 to be >= 1.
     # ./spec/views/gardens/new.html.haml_spec.rb:19:in `block (3 levels) in <top (required)>'
     # ./spec/views/gardens/new.html.haml_spec.rb:17:in `block (2 levels) in <top (required)>'

Finished in 1.15 seconds (files took 2.74 seconds to load)
34 examples,2 failures,17 pending

Failed examples:

rspec ./spec/views/gardens/edit.html.haml_spec.rb:15 # gardens/edit renders the edit garden form
rspec ./spec/views/gardens/new.html.haml_spec.rb:14 # gardens/new renders new garden form

我不知道为什么会这样.当我查看测试时,我有点惊讶路径不包含要编辑的ID(类似于/gardens/#{@garden.id}/edit).当我尝试相应地编辑测试时,rspec无法运行告诉我@garden还没有实例化.

规格/视图/花园/ edit.html.haml_spec.rb:

1 require 'rails_helper'
  2
  3
  4 RSpec.describe "gardens/edit",type: :view do
  5   before(:each) do
  6     @garden = assign(:garden,Garden.create!(
  7       :name => "MyString",8       :square_feet => 1,9       :zone => 1,10       :garden_type => "MyString",11       :user => nil
 12     ))
 13   end
 14
 15   it "renders the edit garden form" do
 16     render
 17
 18      assert_select "form[action=?][method=?]",garden_path(@garden),"post" do
 19 
 20        assert_select "input#garden_name[name=?]","garden[name]"
 21 
 22        assert_select "input#garden_square_feet[name=?]","garden[square_feet]"
 23 
 24        assert_select "input#garden_zone[name=?]","garden[zone]"
 25 
 26        assert_select "input#garden_garden_type[name=?]","garden[garden_type]"
 27 
 28        assert_select "input#garden_user_id[name=?]","garden[user_id]"
 29      end
 30   end
 31 end

我需要做些什么才能通过这些测试?

编辑:这是编辑视图

/app/views/gardens/edit.html.haml:

%h1 Editing garden

= render 'form'

= link_to 'Show',@garden
\|
= link_to 'Back',gardens_path

/app/views/gardens/_form.html.haml:

= simple_form_for(@garden) do |f|
  = f.error_notification

  .form-inputs
    = f.input :name
    = f.input :square_feet
    = f.input :zone
    = f.input :garden_type
    = f.association :user

  .form-actions
    = f.button :submit

解决方法

您包含的错误消息表示找不到给定匹配器的html元素.

对于关联,Simple Form gem默认生成select元素而不是input元素. https://github.com/plataformatec/simple_form#associations

您需要将最后一个断言更改为:
assert_select“select#garden_user_id [name =?]”,“garden [user_id]”

我猜这个问题出现在新视图的规范中?

原文链接:https://www.f2er.com/ruby/268194.html

猜你在找的Ruby相关文章