カテゴリー:
Rails
タグ:
 Rspec should expect it

このエントリーをはてなブックマークに追加
更新日時:
2014年07月14日(月)
作成日時:
2014年07月14日(月)

前の記事 / 次の記事

Rspecにexpectが導入されてから its っていうのは
その役目を終えたものと勝手に解釈していたけど、そうではなかったみたい。

subject と its と should を使うと次のようにきれいに書けたんだけど

context "article" do
  subject { article }
  its(:name) { should eq "Rspecのitsとexpect" }
end

# result
article
  name
    should eq "Rspecのitsとexpect"

expectを使う時は

expect(subject.name).to eq "Rspecのitsとexpect"

と書くので、こう書くと、
subject.name.expect(subject.name) を実行しようとしてバグるような気がして

its(:name) { expect(subject.name).to eq "Rspecのitsとexpect" }

とは書けないと思っていたんだけど、これは書けるみたい。
ちゃんと期待通りの結果になる。

こう書いた場合、its(:name) はsubjectを無視してるのか try してるのか謎だけど、
try してるんだったら実際にあるメソッド名を書くとバグっちゃうこともあるのかなーと。
ブラックボックスで試したみた限りは無視してそうな感じだけど。

でも

it %Q|name should eq "Rspecのitsとexpect"| do
  expect(subject.name).to eq "Rspecのitsとexpect"
end

って書くのもだるいし

context "name" do
  specify { expect(subject.name).to eq "Rspecのitsとexpect" }
end

って書くのもだるいんだよね。

横着。