Я работаю на мои первые рельсы приложение здесь и два из сгенерированных тестов не проходят:Rspec терпит неудачу при тестировании вида формы редактирования
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=?]", "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/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
Я не уверен, почему это происходит. Когда я смотрю на тест, я немного удивлен, что путь не содержит идентификатор для редактирования (что-то вроде /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
Что я должен сделать, чтобы сделать эти тесты пройдены?
EDIT: вот мнения редактировать
/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
Как выглядит вид, который вы пытаетесь использовать? Я не уверен, что вы говорите о пути, не содержащем идентификатор. –
да, не могли бы вы дать дополнительную информацию? Меня удивляет то, что для двух разных тестов он дает ошибку в том же месте (строки 17 и 27). Может быть, что-то пошло не так, прежде чем ваш конкретный тест между ним ... конец запущен? – Axe
@Axe: Честно говоря, я здесь довольно утерян; это мой первый раз с rspec, и я просто пытаюсь понять, как сделать эти сгенерированные тесты пройденными. Это также мое первое приложение для рельсов, поэтому возможно, что я упал с этого «Золотого пути» где-то, не зная об этом. Кроме того, я просто обновил свой пост, и эти номера строк немного изменились (по-моему, из новой новой строки). – doub1ejack