心はいつも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を高速で復習する。10.3.3章。

10.3.4マイクロポストを削除する、です。 仕様 マイクロポスト個別に削除でき …

WindowsキーボードをMacで使う

キーボード難民です。Mac miniでApple純正のキーボードを使っていました …

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

5.6演習です。 一問目。 リスト5.28の静的ページのテストコードは簡潔ですが …

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

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

パーフェクトRuby 2章Rubyの基礎 2-7-3 シンボル

p61 2-7-3 シンボル シンボル好きです。Ruby始めた頃の一番最初の疑問 …

no image
ブログは独自ドメインの方が強いかもね

すっかり月一ペースで更新するブログになってしまい焦ります。 震災直後に政権批判し …

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

6.2.1最初のユーザーテストです。ユーザーモデルをrails g modelで …

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

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

no image
@で始まるのが インスタンス変数

@ で始まるのが インスタンス変数 大文字で始まるのが 定数 文法書のどこに書い …

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

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