Open
Description
#8 に関連して。
あんまり良い例じゃない気がするんですけど、例えば User モデルで、重複する username のユーザーを登録できないという spec を書く場合、
- shoulda-matchers の validate_uniqueness_of を使って DB のテーブルにユニーク制約がはってあることをテストする
- User.save! が ActiveRecord::RecordNotUnique を吐くことをテストする
- save! の前後で users テーブルの件数に変化がないことをテストする(
.not_to change
的なやつ)
みたいな感じで、何通りも spec の書き方がある気がするんですけど、どの書き方が良い spec なのか、という話です。
なんとなく 1 は「状態」のテストになっている気がして、「振る舞い」をテストしてる 2 の方が良い気がするんですけど、実際に DB のテーブルに insert されないことをテストしている 3 のほうが良いような気もするんですよね。
Metadata
Metadata
Assignees
Labels
No labels