嗨我试图学习测试和TDD,所以我开始了一个新的项目,并作出User
模型。我制作了User
型号:name, gender, age
。Rails:单元测试时,在开始时需要“失败”还是“错误”?
class User < ActiveRecord::Base
attr_accessible :age, :gender, :name
end
,我读了TDD的目的是使测试(失败的),固定它们,然后再次运行测试,看看他们通过。那么这是否意味着我希望先发生故障或发生故障或者做任何工作?
我这么问是因为我只是写了第二个测试:
require 'test_helper'
class UserTest < ActiveSupport::TestCase
test "user is created" do
user = User.create(:name => "Edmund", :age => 3, :gender => "m")
assert_equal user, User.find_by_name("Edmund")
assert_equal 3, User.count
end
test "user has sent messages" do
user = User.create(:name => "Edmund", :age => 3, :gender => "m")
2.times do
user.sent_messages.create(:sender_id => user.id)
end
assert_equal 2, user.sent_messages.count
end
end
所发送消息。我跑rake test:units
,期待它是失败的,因为我没有任何Message
模型也不符合has_many :messages
任何关联,我User
模型,但我得到了一个错误:
Edmunds-MacBook-Pro:langoexchange edmundmai$ rake test:units
NOTICE: CREATE TABLE will create implicit sequence "users_id_seq" for serial column "users.id"
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index "users_pkey" for table "users"
Run options:
# Running tests:
E.
Finished tests in 0.087926s, 22.7464 tests/s, 22.7464 assertions/s.
1) Error:
test_user_has_sent_messages(UserTest):
NoMethodError: undefined method `sent_messages' for #<User:0x007fa73bbd68e0>
/Users/edmundmai/.rvm/gems/[email protected]/gems/activemodel-3.2.8/lib/active_model/attribute_methods.rb:407:in `method_missing'
/Users/edmundmai/.rvm/gems/[email protected]/gems/activerecord-3.2.8/lib/active_record/attribute_methods.rb:149:in `method_missing'
/Users/edmundmai/Desktop/Class/Ruby/langoexchange/test/unit/user_test.rb:13:in `block (2 levels) in <class:UserTest>'
/Users/edmundmai/Desktop/Class/Ruby/langoexchange/test/unit/user_test.rb:12:in `times'
/Users/edmundmai/Desktop/Class/Ruby/langoexchange/test/unit/user_test.rb:12:in `block in <class:UserTest>'
2 tests, 2 assertions, 0 failures, 1 errors, 0 skips
rake aborted!
Command failed with status (1): [ruby -I"lib:test" -I"/Users/edmundmai/.rvm/gems/[email protected]/gems/rake-10.0.2/lib" "/Users/edmundmai/.rvm/gems/[email protected]/gems/rake-10.0.2/lib/rake/rake_test_loader.rb" "test/unit/**/*_test.rb" ]
Tasks: TOP => test:units
(See full trace by running task with --trace)
这(错误)的预期结果的TDD,还是我做错了什么?或者错误地解释了TDD的过程?