2011-12-06 157 views
1

我正在ruby中的用户模型上运行单元测试。我仍然在学习Ruby。所以,当我运行Ruby“耙测试:单元”失败

rake test:units 

我得到这个

Loaded suite /usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_test_loader 
Started 
F 
Finished in 0.116562 seconds. 

    1) Failure: 
test_user_attributes_must_not_be_empty(UserTest) [test/unit/user_test.rb:10]: 
<false> is not true. 

1 tests, 5 assertions, 1 failures, 0 errors 
rake aborted! 
Command failed with status (1): [/usr/bin/ruby1.8 -I"lib:test" "/usr/lib/ru...] 

Tasks: TOP => test:units 
(See full trace by running task with --trace) 

,当我去到文件test/unit/user_test.rb:10我看到这条线,

require 'test_helper' 

    class UserTest < ActiveSupport::TestCase 
     test "user attributes must not be empty" do 
      user = User.new 
     assert user.invalid? 
     assert user.errors[:username].any? 
     assert user.errors[:name].any? 
     assert user.errors[:surname].any? 
     >>>assert user.errors[:date_birth].any?<<< Here! 
     assert user.errors[:date_reg].any? 
     assert user.errors[:email].any? 
    end 
end 

那么是什么导致了错误?为什么我会在那里发现错误,而不是其他地方?像用户名?

编辑: 我的用户类别:

class User < ActiveRecord::Base 

validates :username, :name, :surname, :email, :presence => true 
validates :username, :uniqueness => true 

end 
+0

你在什么用户类? – Nerian

+0

向我们展示'User.new'在控制台中输出的内容。 –

+0

我该如何运行它? –

回答

2

你的测试,说的是,如果在所有这些属性的任何错误,则测试通过。

您没有对date_birth进行验证,因此没有发生错误,因此测试未通过。

+0

hmm ok thx!我添加了一个日期验证,它工作 –