心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

Everyday Rails頑張る。3章モデルスペック

   


テスト書いてからコードの決意。
今のような環境がない時代のプログラマでしたが、自動試験はやっていました。しかし、テストは完璧に行っていたものの、TDDという考え方はなかったな。隔絶の念があります。
というわけで
Everyday Railsを頑張ることにします。

3章から。

モデルのテストから書くのがいい、と何人かの方からアドバイスをいただきました。この本もそうだ。

モデルスペックには次のようなテストを含めましょう。
• 有効な属性が渡された場合に、モデルのcreate メソッドが有効になっていること
• バリデーションを失敗させるデータであれば、有効でないこと
• クラスメソッドとインスタンスメソッドが期待通りに動作すること

仕様を書くと同時にテストも書いている状態を期待しているので、RailsTutorialではテストの日本語化がわからず苦労しました。

describe Contact do
# 姓と名とメールがあれば有効であること
it “is valid with a firstname, lastname and email”
# 名がなければ無効であること
it “is invalid without a firstname”
# 姓がなければ無効であること
it “is invalid without a lastname”
# メールアドレスがなければ無効であること
it “is invalid without an email address”
# 重複したメールアドレスなら無効であること
it “is invalid with a duplicate email address”
# 連絡先のフルネームを文字列として返すこと
it “returns a contact’s full name as a string”

endが必要じゃない?

それはさておき、

describe テストするモデル名 do
#要求事項を日本語で
it "要求事項"
end

とりあえず、要求事項をざっと書いてからテストスクリプトに仕上げていくやり方、望んでいたとおり。

RailsTutorialでは出てきていて、わかりづらいという意見も聞いていたshouldですが、expect() というのが新しい書き方だそう。

# true の時はtrue であること
it “is true when true” do
true.should be_true
end

は古い書き方で、

# true の時はtrue であること
it “is true when true” do
expect(true).to be_true
end

は新しい書き方。

describe Contact do
# 姓と名とメールがあれば有効であること
it “is valid with a firstname, lastname and email”
contact = Contact.new(
firstname: ‘Aarpn’,
lastname: ‘Summer’,
email: ‘tester@example.com’)
expect(contact).to be_vaild
end

インスタンスを一個つくってみて、be_vaild
be_vaildはRSpecのメソッド

RSpecのドキュメントはここでいいのか?

http://rspec.rubyforge.org/rspec-rails/1.3.2/

テスト実行すると
is valid with a firstname, lastname and email”は緑でした。
名前Aaronを取ってしまうと赤になりました。

次は
バリデーションをテストする
からです。

 - テクニカル ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
RailsTutorial4.0を高速で復習する。3章。

巷にRails4本がなく、Rails3本をRails4でやってみようとしたところ …

no image
RailsTutorial4.0を高速で復習する。8.3章。

8.3Cucumberの紹介 (オプション) Cucumberは振舞駆動開発用の …

no image
Macでアプリを強制終了

Macでアプリを強制終了したことは今までなかったのですが、どうにもftpソフトの …

iPadのiBooksで自炊とかしたPDFの電子書籍を読む

手順覚えないのでブログに書きます。 Bookscan使用して手持ちPDF電子書籍 …

no image
iTunesをMacBookAirからWindowsに戻しました。

2月にMacBookAirを購入し、今までWindows上にあったiTunesを …

no image
いまだにユビキタスなSONYとクラウドに向かうApple

PS3のトルネが良さそう@ヤマダ電機。PS3本体とチューナーの2台になってスッキ …

no image
「Follow me」バッジのつけ方。

ブログの横についている「Follow me」バッジ。いろんな方がつけているのを見 …

no image
RailsTutorial4.0を高速で復習する。10.2章。

10.2マイクロポストを表示する、です。 ポストの投稿ではなく、表示だけを先に作 …

no image
RailsTutorial4.0を高速で復習する。5.6章。演習3問目。

5章最後の演習、3問目です。 リスト5.38に示すように、元のヘルパーメソッドに …

no image
RailsTutorial4.0を高速で復習する。9.3章。

9.3すべてのユーザーを表示する、です。 いろいろ細かい実装するまえにこれやるべ …