如何断言一个类将使用RSpec响应一个类方法?

时间:2012-04-19 15:05:40

标签: ruby rspec2

假设我有类似的定义:

class Foo
  def init(val)
    @val = val
  end

  def self.bar
    :bar
  end

  def val
    @val
  end
end

的规格如下:

describe Foo
  it { should respond_to(:val) }
  it { should respond_to(:bar) }
end

第二个it断言失败。从RSpec的文档中我不清楚respond_to应该在类方法上失败。

2 个答案:

答案 0 :(得分:18)

现在建议我们使用expect,就像这样:

describe Foo do
  it 'should respond to :bar' do
    expect(Foo).to respond_to(:bar)
  end
end

请参阅:http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/


OLD ANSWER:

实际上,您可以通过提供主题来实现此方法:

describe Foo do
  subject { Foo }
  it { should respond_to :bar } # :bar being a class method
end

如下所述:http://betterspecs.org/#subject

答案 1 :(得分:10)

你的例子应该是这样写的:

it 'should respond to ::bar' do
  Foo.should respond_to(:bar)
end