Railsでアプリを作る その5 振舞を書く
当初とは結構構想が変わってしまいましたが、こんな感じで作ろうかなと思っています。
今日はRSpecを書いてみる
とりあえずuserモデルに書いてみよう
バリデーションなどを考えつつ・・・
describe User do describe "バリデーション" do before(:each) do @user = User.new @user.name = "test" @user.mail_address = "test@test.com" @user.password = "password" @user.skype_id = "test_id" end it "save success!" do @user.save.should be_true end it "name length=40 save success" do @user.name = "123456789012345678901234567890123456789" @user.save.should be_true end it "name length=41 save error" do @user.name = "12345678901234567890123456789012345678901" @user.save.should be_false end it "mail_address length=80 save success" do @user.mail_address = "12345678901234567890123456789012345678901234567890123456789012345678901234567890" @user.save.should be_true end it "mail_address length=81 save error" do @user.mail_address = "123456789012345678901234567890123456789012345678901234567890123456789012345678901" @user.save.should be_false end it "skype_id length=40 save success" do @user.skype_id = "1234567890123456789012345678901234567890" @user.save.should be_true end it "skype_id length=41 save error" do @user.skype_id = "12345678901234567890123456789012345678901" @user.save.should be_false end end end
とりあえずこんな感じになった。
ruby script/spec -cfs spec/models/user_spec.rb
実行すると…
User バリデーション - save success! - name length=40 save success - name length=41 save error (FAILED - 1) - mail_address length=80 save success - mail_address length=81 save error (FAILED - 2) - skype_id length=40 save success - skype_id length=41 save error (FAILED - 3) 1) 'User バリデーション name length=41 save error' FAILED expected false, got true ./spec/models/user_spec.rb:25: script/spec:10: 2) 'User バリデーション mail_address length=81 save error' FAILED expected false, got true ./spec/models/user_spec.rb:35: script/spec:10: 3) 'User バリデーション skype_id length=41 save error' FAILED expected false, got true ./spec/models/user_spec.rb:45: script/spec:10: Finished in 0.108239 seconds 7 examples, 3 failures
ということで
この場合はこういう結果が返ってくるというのが
振舞
これが全て成功すればOK
そうすると、デグレしてないか分かるもんね!