web-dev-qa-db-ja.com

RSpecを使用して、何かが別のオブジェクトのインスタンスであるかどうかを確認する

オブジェクトがRSpecを使用して別のオブジェクトのインスタンスであるかどうかを確認する方法が必要です。例えば:

describe "new shirt" do
  it "should be an instance of a Shirt object"
    # How can i check if it is an instance of a shirt object
  end
end
52
Dillon Benson

推奨される構文は次のとおりです。

expect(@object).to be_a Shirt

古い構文は次のとおりです。

@object.should be_an_instance_of Shirt

2つには非常に微妙な違いがあることに注意してください。シャツがガーメントから継承する場合、-これらの期待の両方が合格します

expect(@object).to be_a Shirt
expect(@object).to be_a Garment

あなたが@objectがShirtである場合、2番目の期待は失敗します

@object.should be_an_instance_of Shirt
@object.should be_an_instance_of Garment
117
Dillon Benson

オブジェクトがclass?のインスタンスであるかどうかをチェックしたいということです。もしそうなら、それは簡単です、ただclassを使用してください:

@object.class.should == Shirt
7
Chris Salzberg