我目前正在讨论第6章关于RoR教程(Hartl' s)的建模用户。并且,当我运行rake测试时遇到了一个问题 - 我不断收到如下所示的错误消息:
/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
并运行rake测试,错误消息现在显示如下:
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的初学者,我感到无助......我不知道如何找出这些错误代码。
我将非常感谢您的专家建议。
谢谢。
答案 0 :(得分:0)
错误告诉你许多事情,但它可能都与第一个错误有关。
<强>语法错误:强>
语法错误是无效代码。 Ruby解析器无法理解它,并且异常足以向您显示有问题的行(以及告诉您行号):
format: { with: VALID_EMAIL_REGEX}
^
那里没有预料到结肠。我不能告诉你的是你是否错过了前一行的开放式括号({)。你必须仔细检查你周围的代码。
nil
该行:
NoMethodError: undefined method `each' for nil:NilClass
建议您尝试在未设置的变量上调用每个方法。在这种情况下,它看起来像你试图迭代一个集合。 nil
是任何变量的默认值,除非您使用其他变量进行设置。
您的所有例外都是这两种情况的变体。
答案 1 :(得分:0)
提示: 我想补充一些可能对其他人有帮助的事件。 在测试错误后修复时,请注意您的下一个更改可能无法响应并继续显示相同的错误: 然后,您可能需要为该错误杀死现有进程。 试试
$ps -a
寻找你的应用程序,例如:sample_app
$23507 ttys004 0:00.36 spring server | sample_app | started 2 mins ago
然后杀了
$kill -9 23507
现在运行&#39; rails test&#39;并继续解决它。