Подтвердить что ты не робот

Использование 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
4b9b3361

Ответ 1

Предпочтительный синтаксис:

expect(@object).to be_a Shirt

Более старый синтаксис:

@object.should be_an_instance_of Shirt

Обратите внимание, что между ними существует очень тонкая разница. Если Shirt должны были наследовать от Garment, тогда оба этих ожидания пройдут:

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

Если вы это сделаете, а @object - Shirt, то второе ожидание не будет:

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

Ответ 2

Вы хотите проверить, является ли объект экземпляром класса? Если это так, просто, используйте class:

@object.class.should == Shirt