“target.should”如何在rspec中工作

时间:2012-05-01 15:29:38

标签: ruby metaprogramming

使用rpec时,我无法弄清楚是什么。

target.should be 5

我知道如何使用它,但它是如何实现的?它是否类似于运算符,即

target.should.send(:be, 5)

我如何实现类似的东西?

1 个答案:

答案 0 :(得分:3)

be是一个返回RSpec匹配器的方法,如a comment above中的d11wtq所述

您可以实现任何其他返回匹配器的方法,但有other, simpler ways来编写匹配器。

RSpec::Matchers.define :be_a_multiple_of do |expected|
  match do |actual|
    actual % expected == 0
  end
end

describe 9 do
  it "should be a multiple of 3" do
    9.should be_a_multiple_of(3)
  end
end