開発備忘録 2018/10/22
[RSpec] テストを保留にする skip と pending の違い
skip
example は実行されず、そのステータスは pending になります。
describe "an example" do it "is skipped" do skip end end => 1 example, 0 failures, 1 pending
pending
example でエラーが発生するとそのステータスは pending となり、パスすると逆にステータスが failure になります。
describe "an example" do it "is implemented but waiting" do pending("something else getting finished") fail end end => 1 example, 0 failures, 1 pending describe "an example" do it "is implemented but waiting" do pending("something else getting finished") expect(1).to be(1) end end => 1 example, 1 failure
使い分け
何らかの事情でいまはパスさせることができないけどいつか修正するよ、といったテストには pending を使い、それに当てはまらない場合は skip を使うのがいいと思います。
任意のクラスを継承しているかを調べる
ActiceRecord を継承した User
クラスが存在し、それが ActiveRecord::Base
を継承するのかを知りたい。
class User < ActiveRecord::Base; end
is_a?
オブジェクトが引数で受け取ったクラスのインスタンスであれば true、そうでなければ false を返します。
user = User.find(1) user.is_a?(ActiveRecord::Base) => true
ancestors.include?
インスタンスからではなく、クラス自体が任意のクラスを継承しているかを知りたいとき。
ちなみに ancestors
メソッドは親クラスを配列にして返します。
User.ancestors.include?(ActiveRecord::Base) => true