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

そうすると、デグレしてないか分かるもんね!