web-dev-qa-db-fra.com

Utilisation de RSpec pour vérifier si quelque chose est une instance d'un autre objet

J'ai besoin d'un moyen de vérifier si un objet est une instance d'un autre objet utilisant RSpec. Par exemple:

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

La syntaxe préférée est:

expect(@object).to be_a Shirt

L'ancienne syntaxe est:

@object.should be_an_instance_of Shirt

Notez qu'il existe une différence très subtile entre les deux. Si Shirt héritait de Garment alors ces deux attentes passeront:

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

Si vous le faites et que @object est une chemise, alors la deuxième attente échouera:

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

Vous voulez dire que vous voulez vérifier si un objet est une instance d'un classe? Si c'est le cas, c'est simple, utilisez simplement class:

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