Ошибка теста 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
является значением по умолчанию для любой переменной, пока вы не установите его с чем-то другим.
Все ваши исключения являются вариациями этих двух.