Не удалось найти поле: «Имя» - PullRequest
1 голос
/ 26 апреля 2011

Я занимаюсь обучением Michael Hartl Rails 3, глава 8.4, стр. 316-320.Я запускаю тест users_spec.rb, и оба теста не проходят со следующей ошибкой:

Failures:

1) Users signup failure should not make a new user

Failure/Error: fill_in "Name", :with => ""
Webrat::NotFoundError:

Could not find field: "Name"

# ./spec/requests/users_spec.rb:12:in `block (5 levels) in <top (required)>'
# ./spec/requests/users_spec.rb:10:in `block (4 levels) in <top (required)>'

2) Users signup success should make a new user

Failure/Error: fill_in "Name",             :with => "Example User"
Webrat::NotFoundError:

Could not find field: "Name"

# ./spec/requests/users_spec.rb:28:in `block (5 levels) in <top (required)>'
# ./spec/requests/users_spec.rb:26:in `block (4 levels) in <top (required)>'

Finished in 3.97 seconds

2 examples, 2 failures**

МОЙ ФАЙЛ USERS_SPEC.RB -

require 'spec_helper'

describe "Users" do
  describe "signup" do
    describe "failure" do
      it "should not make a new user" do
        lambda do
          visit signup_path
          fill_in "Name",       :with => ""
          fill_in "Email",      :with => ""
          fill_in "Password",   :with => ""
          fill_in "Confirmation", :with => ""
          click_button
          response.should render_template('users/new')
          response.should have_selector("div#error_explanation")
        end.should_not change(User, :count)
      end
    end

    describe "success" do
      it "should make a new user" do
        lambda do
          visit signup_path
          fill_in "Name",       :with => "Example User"
          fill_in "Email",      :with => "user@example.com"
          fill_in "Password",   :with => "foobar"
          fill_in "Confirmation", :with => "foobar"
          click_button
          response.should have_selector("div.flash.success",:content => "Welcome")
          response.should render_template('users/show')
        end.should change(User, :count).by(1)
      end
    end
  end
end

Можеткто-нибудь поможет мне?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 26 апреля 2011

Распечатайте ответ, чтобы увидеть, что вы на самом деле получаете. Вы также можете посмотреть на log/test.log, чтобы узнать, было ли исключение или перенаправление в этом запросе.

visit signup_path
puts response.body
0 голосов
/ 27 апреля 2011

ОК, я решил проблему. Я использую Учебное пособие по Rails 3, чтобы создать свою систему аутентификации для своего собственного Веб-сайта, поэтому я немного изменил форму регистрации в app / views / users / new по сравнению с оригиналом Майкла Хартла:

Оригинал =

<div id="signupfield">
<%= f.label :name, "Name" %><br />
<%= f.text_field :name %>
</div>

Мой собственный Редактировать =

<div id="signupfield">
<%= f.label :name, "Username" %><br />
<%= f.text_field :name %>
</div>

Скобки (имя и имя пользователя) важны, потому что они указаны в spec / запросы / users_spec.rb:

Оригинал =

lambda do
visit signup_path
fill_in "Name",  :with => "".......

Мои правки =

lambda do   
visit signup_path       
fill_in "Username", :with => ""......

Я прошел тест полностью, просто помните, что все, что вы указали в скобках, должно совпадать с круглыми скобками.

0 голосов
/ 26 апреля 2011

Сначала вы должны создать таблицу Users в вашей базе данных.Затем создайте соответствующие поля (имя, адрес электронной почты, пароль, подтверждение).

Запустите миграцию (rake db: migrate)

И так, попробуйте снова запустить тесты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...