こんにちは 私はテストと TDD を学ぼうとしているので、新しいプロジェクトを開始してUser
モデルを作成しました。User
でモデルを作成しました: name, gender, age
.
class User < ActiveRecord::Base
attr_accessible :age, :gender, :name
end
TDD とは、(失敗した) テストを作成し、それらを修正してから、再度テストを実行して、それらが成功することを確認することであると読みました。それで、最初に失敗またはエラーが必要なのか、それともどちらかが機能するのかということですか?
2番目のテストを書いたばかりなので、私は尋ねています:
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/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/activemodel-3.2.8/lib/active_model/attribute_methods.rb:407:in `method_missing'
/Users/edmundmai/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/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/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/rake-10.0.2/lib" "/Users/edmundmai/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/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 のプロセスを間違って解釈しましたか?