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

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

  関連記事

コンビニで切れないiPhone充電ケーブル買った

iPhone充電に使うライトニングケーブルって高いのに切れ易く涙目。 こんな感じ …

Eclipse CDTインストールでCould not find

さいたまスーパーアリーナで全スサノオ使い果たし力尽きてはや1ヶ月と1週間。世の中 …

確定申告終わったぁ〜MoneyForwardのおかげです

確定申告終わりました。青色で申請しているので決算書必要なのですが、昨年から使い始 …

no image
formatはどこから取ってくる?

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

no image
データベースのリファクタリング?

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

パーフェクトRuby 3章制御構造/メソッド/組み込み関数 3-2 基本的な制御構造

p75 3-2 基本的な制御構造 条件分岐、繰り返し、ジャンプ構文について 3- …

Mac mini買いました。

Appleの新製品発表が近づいているというのに、Mac mini買ってしまいまし …

BiglobeでWimax契約して怒った

久々にダメサービスに遭遇して怒ったので書きます。 BiglobeでWimax契約 …

ブログをアプリを使ってiPhoneから更新

この前の投稿と、前の前の投稿はiphoneから行いました。ノートPCだとブログ投 …

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

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