Ошибка теста Rake - test_should_get new уже определен в UserControllerTest

Я в настоящее время нахожусь на Главе 6 на учебниках RoR (Hartl's), выясняющих пользователей моделирования. И, я столкнулся с проблемой, когда я запускаю тест рейка - я постоянно получаю сообщение об ошибке, показанное ниже:

/u$ bundle exec rake test
rake aborted!
test_should_get_new is already defined in UsersControllerTest
/Users/joebcvan/.rvm/gems/ruby-2.2.0@global/gems/activesupport-      
4.2.0/lib/active_support/testing/declarative.rb:14:in `test'
.
.
.

/Users/joebcvan/.rvm/gems/ruby-2.2.0@global/gems/railties-    
4.2.0/lib/rails/test_unit/sub_test_task.rb:20:in `invoke_rake_task'
/Users/joebcvan/.rvm/gems/ruby-2.2.0@global/gems/railties-
4.2.0/lib/rails/test_unit/testing.rake:8:in `block in <top (required)>'
Tasks: TOP => test:run
(See full trace by running task with --trace)

Итак, я взглянул на файл user_Controller_test.rb и попробовал ерзать здесь, но безуспешно. Мой user_controller_test.rb показан ниже.

require 'test_helper'

class UsersControllerTest < ActionController::TestCase

  test "should get new" do
    get :new
    assert_response :success
  end

end

Я попытался удалить четыре строки кода, показанные ниже

test "should get new" do
    get :new
    assert_response :success
  end

и выполнил тест грабли, и сообщение об ошибке теперь появляется как ниже:

  1) Error:
SiteLayoutTest#test_should_get_home:
SyntaxError: /Users/joebcvan/workspace/sample_app/app/models/user.rb:5: syntax         
error, unexpected ':', expecting keyword_end
        format: { with: VALID_EMAIL_REGEX}
           ^


Error:
SiteLayoutTest#test_should_get_home:
NoMethodError: undefined method `each' for nil:NilClass



  2) Error:
SiteLayoutTest#test_should_get_help:
SyntaxError: /Users/joebcvan/workspace/sample_app/app/models/user.rb:5: syntax 
error, unexpected ':', expecting keyword_end
        format: { with: VALID_EMAIL_REGEX}
           ^


Error:
SiteLayoutTest#test_should_get_help:
NoMethodError: undefined method `each' for nil:NilClass

.
.
.
.
 12) Error:
UserTest#test_name_should_not_be_too_long:
SyntaxError: /Users/joebcvan/workspace/sample_app/app/models/user.rb:5: syntax     
error, unexpected ':', expecting keyword_end
        format: { with: VALID_EMAIL_REGEX}
           ^



 13) Error:
UserTest#test_should_be_valid:
SyntaxError: /Users/joebcvan/workspace/sample_app/app/models/user.rb:5: syntax 
error, unexpected ':', expecting keyword_end
        format: { with: VALID_EMAIL_REGEX}
           ^


13 runs, 0 assertions, 0 failures, 13 errors, 0 skips

И теперь я застрял... Я новичок в RoR, и я чувствую себя беспомощным... Я не знаю, как выяснить эти коды ошибок.

Я буду очень признателен за советы экспертов, пожалуйста.

Спасибо.

2 ответа

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

$ps -a

Ищете ваше приложение, например: sample_app

$23507 ttys004    0:00.36 spring server | sample_app | started 2 mins ago

Тогда убей

$kill -9 23507

А теперь запустите "тест рельсов" и продолжайте его исправлять.

Ошибки говорят о многих вещах, но все это может быть связано с первой ошибкой.

Ошибка синтаксиса:

Синтаксическая ошибка - неверный код. Анализатор Ruby не может этого понять, и исключение достаточно любезно, чтобы показать вам ошибочную строку (а также сообщить вам номер строки):

format: { with: VALID_EMAIL_REGEX}
      ^

Толстой кишки там не было. Чего я не могу сказать, так это того, что у вас отсутствует открывающая скобка или нет ({) в предыдущей строке. Вам придется дважды проверить свой код там.

Что-нибудь сnil

Линия:

NoMethodError: undefined method `each' for nil:NilClass

Предполагает, что вы пытаетесь вызвать каждый метод для переменной, которая не была установлена. В этом случае похоже, что вы пытались перебрать коллекцию. nil является значением по умолчанию для любой переменной, пока вы не установите его с чем-то другим.

Все ваши исключения являются вариациями этих двух.

Другие вопросы по тегам