Rake测试错误 - 在UserControllerTest中已经定义了test_should_get new

时间:2015-02-03 12:13:49

标签: ruby-on-rails ruby rake-test

我目前正在讨论第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的初学者,我感到无助......我不知道如何找出这些错误代码。

我将非常感谢您的专家建议。

谢谢。

2 个答案:

答案 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;并继续解决它。