Using RSpec to check if something is an instance of another object

RubyTestingRspecInstance

Ruby Problem Overview


I need a way to check if an object is an instance of another object using RSpec. For example:

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

Ruby Solutions


Solution 1 - Ruby

The preferred syntax is:

expect(@object).to be_a Shirt

The older syntax is:

@object.should be_an_instance_of Shirt

Note that there is a very subtle difference between the two. If Shirt were to inherit from Garment then both of these expectations will pass:

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

If you do and @object is a Shirt, then the second expectation will fail:

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

Solution 2 - Ruby

You mean you want to check if an object is an instance of a class? If so, that's easy, just use class:

@object.class.should == Shirt

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDillon BensonView Question on Stackoverflow
Solution 1 - RubyDillon BensonView Answer on Stackoverflow
Solution 2 - RubyChris SalzbergView Answer on Stackoverflow