メソッドがある事をテスト
let(:foo) { create :foo } it 'foo has #method' do expect(foo).to respond_to(:method) end
又は
expect(foo.respond_to?(:method)).to be true
メソッドがない事をテスト
let(:foo) { create :foo } it 'foo has #method' do expect(foo.respond_to?(:method)).to be false end
ポエム
exists
みたいなメソッドでチェックできるのかと思ったけど違った。
respond_to
と method_defined
との違いがよく解ってないのだけれど、respond_to
はクラスのインスタンスオブジェクトに使って、method_defined
はクラスそのもにに使うって感じなのだろうか… なるほどわからん!
そして、RSpec 全然わからん…
いろんな Decorator が include
してる共通の module の単体テストってどう書いて良いのかも全くわからない…
解らないことが複数重なっていて、思っていることがすぐに書けない、書き方が分からないという本質でない所に時間がかかる上に、ちょっとした変更を試すにも docker-compose を通すと超遅い。Try & Error にかかる待ち時間が長さから来るイライラも相まって Rails プロジェクトへの苦手意識ばかりが高まっていて正直辛い。 (たぶんRailsの "魔法" とか "おまじない" みたいなのが多いのが、あまり好きじゃないっぽい。どう動作しているかコードを見て理解しづらいから。
[参考]
- ruby on rails - How to check if a method exists using Rspec? - Stack Overflow
- respond_to? (Object) - Rubyリファレンス
- method_defined? (Module) - Rubyリファレンス
- Rubyでメソッドの存在を調べる方法まとめ - プログラミング的なSomething
- RSpecで何をテストしたらいいのか決めてない時、とりあえずわたしが書いてるもの。 - Qiita
- 作者: 大場寧子,松本拓也,櫻井達生,小田井優,大塚隆弘,依光奏江,銭神裕宜,小芝美由紀
- 出版社/メーカー: マイナビ出版
- 発売日: 2018/10/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る