railsのテスト駆動に関する参考になった記事があるので共有
https://teratail.com/questions/121833?link=qa_related_pc_sidebar
テストをする理由は今のコードと自分の認識を一致させることだったということ。
user_test.rb
class UserTest < ActiveSupport::TestCass
test "nameの長さは50文字以内である事" do
# エラーを起こすために、わざと51文字を設定する
@user.name = "a" * 51
# もし、正しくバリデーションが設定されていたら、
# バリデーションがfalseになるはず
# assert_notは引数の結果がfalseに時にテストが成功する
assert_not @user.valid?
end
test "emailの長さは255文字以内である事" do
# エラーを起こすために、わざと255文字を超える文字列を設定
# "a" * 256だけでもいいでしょう
@user.email = "a" * 244 + "@example.com"
assert_not @user.valid?
end
end
assert_notはassert_notは引数の結果がfalseの時にテストが成功とする命令
つまり現時点でバリテーションがかかれていないため、@user.validがtrueとなるため、テストは失敗。
今のコードと自分の認識はあっていたということになる。
じゃあバリテーションを書こう。
こうなるわけなのか。。。なるほど。
テストって意味あるの?って疑問だったが、効率良く開発を進めていく上で必要不可欠なんだと理解した。
(1) 仕様を先に決める(頭の中だけでもいいし、紙に書いたりしてもいい)
(2) 仕様をテストとして記述する
(3) 仕様を満たすために実装する
このステップが大事なんですね。
めちゃめちゃ参考になりました。テストの書き方とかも勉強しないとな