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

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

  関連記事

rails gでのファイル名、クラス名、アクション名

rails gすると、コントローラーとアクションができますが、 その書き方とファ …

twitterと連携した写真のライブラリー

iPhoneを使うようになってから気軽に写真撮影し、そのままtwitter投稿す …

no image
RailsとRubyのインストール済みバージョン確認し、Rails3.2+Ruby1.9に戻してみる。

Rails3.2で作る必要があったので、Rails4はいったんおいといてRail …

no image
rbenvとruby-buildのインストール

諸々のものをインストールしたら、次はHomebrewを使ってrbenvとruby …

パーフェクトRuby 2章Rubyの基礎 2-1 Hello,Ruby

12章から5章まではPart2 Ruby言語仕様 です。 2章 Rubyの基礎 …

Ruby on Railsを4.1.0にバージョンアップする

真央ロス真央廃を超えた腐まお状態な1ヶ月1週間、まるで娘が嫁に行った父親のごとし …

no image
Ruby on Railsのインストール

Rubyのアップデートが終わったので、いよいよRailsをインストールします。 …

no image
iPhoneのメーラーが真っ黒になってしまった。

iPhoneのメーラーはiPhoneにデフォルトでついているメーラーを使っていま …

no image
Mavericksでruby2.0 rails4.0.0のGem

MacBookAirにMavericksインストールして初めてのrails ne …

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

6.2.3長さを検証する、です。空データを拒否した次は、入力できるデータ長の制限 …