0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【RSpec】スタブとモック

Posted at

##スタブ
オブジェクトのメソッドをオーバーライドし、事前に決められた値を返します。つまりスタブは、呼び出されるとテスト用に本物の結果を返す、ダミーメソッドです。スタブをよく使うのはメソッドのデフォルト機能をオーバーライドするケースです。特にデータベースやネットワークを使う処理が対象になります。
(引用:Everyday Rails - RSpecによるRailsテスト入門)

  • メソッドの中のメソッドをスタブしてテストしたいとき
user = User.new
allow(user).to receive(:full_name).and_return('user')

##モック
本物のオブジェクトのふりをするオブジェクトで、テストのために使われます。モックはテストダブル(test doubles)と呼ばれる場合もあります。モックはこれまでファクトリやPOROを使って作成したオブジェクトの代役を務めます(訳注:英語の“double” には「代役」や「影武者」の意味があります)。しかし、モックはデータベースにアクセスしない点が異なります。よって、テストにかかる時間は短くなります。
(引用:Everyday Rails - RSpecによるRailsテスト入門)

user = double("user", name: "Fake User")
# => #<Double "user">
  • 引数やメソッドの呼び出し回数をチェックする

####注意点

モックは実際の実装が変わったときでもテストがパスしてしまうので、なるべくinstance_doubleclass_doubleなどの検証機能付きのテストダブルを使ってテストしたほうが良い。

user = instance_double("User", name: "Fake User")
# => #<InstanceDouble(User) (anonymous)>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?