使用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 

首选的语法是:

 expect(@object).to be_a Shirt 

较旧的语法是:

 @object.should be_an_instance_of Shirt 

请注意,两者之间有一个非常微妙的差异。 如果衬衫是从服装inheritance那么这两个期望将通过

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

如果你这样做,@object是衬衫,那么第二个期望就会失败

 @object.should be_an_instance_of Shirt @object.should be_an_instance_of Garment 

你的意思是你想检查一个对象是否是一个的实例? 如果是这样,这很容易,只需使用class

 @object.class.should == Shirt