使用RSpec检查某些内容是否是另一个对象的实例

Dil*_*son 53 ruby testing rspec instance

我需要一种方法来检查对象是否是使用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
Run Code Online (Sandbox Code Playgroud)

Dil*_*son 120

首选语法是:

expect(@object).to be_a Shirt
Run Code Online (Sandbox Code Playgroud)

较旧的语法是:

@object.should be_an_instance_of Shirt
Run Code Online (Sandbox Code Playgroud)

请注意,两者之间存在非常微妙的差异.如果衬衫要从Garment继承,那么这两个期望都将通过:

expect(@object).to be_a Shirt
expect(@object).to be_a Garment
Run Code Online (Sandbox Code Playgroud)

如果你这样做并且@object是一个衬衫,那么第二个期望将会失败:

@object.should be_an_instance_of Shirt
@object.should be_an_instance_of Garment
Run Code Online (Sandbox Code Playgroud)


Chr*_*erg 7

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

@object.class.should == Shirt
Run Code Online (Sandbox Code Playgroud)