心はいつも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

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

  関連記事

WordPressのテンプレートを自分で作ってみました

ブログ更新は久々になりました。この2週間、ずっとこのブログ用にWordPress …

no image
ブログのデザイン開発、着手から完成まで今日1日でやります

久々のブログです。 昨日アクセス解析も1年ぶりに見たのですが、何がなくとも一定の …

no image
createとnew

ruby on rails3プリケーションプログラミングの本の内容をruby2. …

教育のためならば、iPadアプリ料金なんて青天井ですわ

今年4月、USでのiPad発売。姪の中学入学祝いにちょうどいいなと思っていたら日 …

Railsを立ち上げる

RubyのアップデートとRailsのインストールが無事終わったので、いよいよRa …

民●党批判したら検索順位が落ちたのか?

このブログ、airpucciのドメインも元のwww.airpucci.comに戻 …

Ruby1.9+Rails3.2に加えて、Ruby2.0+Rails4.0のプロジェクトを作る。

Ruby1.9+Rails3.2のプロジェクトは作りましたが、その後、Ruby2 …

no image
MavericksアップデートしRuby2.0+Rails4.0.2にversion upする

何を今さら感ですが、MacはAirとMiniの2台持ちです。Airのほうを人柱と …

no image
MacBookAirで真央ちゃんのテレビ放映を見ました

テレビ持っていないを公言しています。 15年以上使っていたナショナル6型ブラウン …

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

6.2.4フォーマットを検証する です。 メールアドレスは文字数制限だけじゃだめ …