使用 RSpec 检查某物是不是是另一个对象的实例

Posted

技术标签:

【中文标题】使用 RSpec 检查某物是不是是另一个对象的实例【英文标题】:Using RSpec to check if something is an instance of another object使用 RSpec 检查某物是否是另一个对象的实例 【发布时间】:2012-11-12 22:58:40 【问题描述】:

我需要一种方法来使用 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

【问题讨论】:

请注意,一个对象绝不是“另一个对象的实例”。一个对象是一个的实例,而不是另一个对象。 @JacobLockard 类是 Ruby 中的对象。 Ruby 文档指出:“Ruby 中的类是一流的对象——每个都是 Class 类的实例。”和“创建新类时,会初始化 Class 类型的对象并将其分配给全局常量。” ruby-doc.org/core-2.5.3/Class.html 【参考方案1】:

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

@object.class.should == Shirt

【讨论】:

【参考方案2】:

首选语法是:

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 是衬衫,那么第二个期望将失败

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

【讨论】:

以上是关于使用 RSpec 检查某物是不是是另一个对象的实例的主要内容,如果未能解决你的问题,请参考以下文章

使用 RSpec + capybara-webkit 检查 JS 框是不是存在

检查一个列表是不是是另一个与重复项一起使用的列表的轮换

检查一个数组是不是是另一个数组的子集

如何使用 POSTMAN 测试某物是不是大于某个数字

如何检查一个目录是不是是另一个目录的子目录

如何使用 pry 调试器检查 rspec 变量