我需要一种方法来判断一个对象是否是使用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

推荐答案

首选语法是:

expect(@object).to be_a Shirt

较旧的语法是:

@object.should be_an_instance_of Shirt

请注意,两者之间有一个非常微妙的区别.如果衬衫继承自服装,那么both of these expectations will pass:

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

如果你做了,并且@object是一件衬衫,那么second expectation will fail:

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

Ruby相关问答推荐

有没有办法保存 ruby​​ 代码的执行,以便稍后使用逐步重播对其进行调试?

从 Time 对象获取下/上个月

Ruby 局部变量未定义

如何在 Ruby 中生成子进程?

Ruby 中的 class() 与 type()

对具有相同键的 2 个哈希属性求和

在 ruby​​ 中访问嵌套哈希的元素

是否有等效于 `Array::sample` 的哈希值?

格式化 Ruby 的漂亮打印

扩展self 和module_function一样吗?

RSpec:每次指定对具有不同参数的方法的多次调用

在 jekyll 博客中支持标签的简单方法

Ruby中的常量或类变量?

文字数字中的下划线是什么意思?

带有可选参数的方法

如何在 Ruby 脚本中运行 Rake 任务?

Ruby - time.now UTC

在 Ruby 中, coerce() 是如何工作的?

哪个键/值存储最有前途/最稳定?

为什么表达式 (true == true == true) 会产生语法错误?