14

假设我有一个像这样的类定义:

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在类方法上应该失败。

4

2 回答 2

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/


旧答案:

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

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

如此处所述:http: //betterspecs.org/#subject

于 2012-10-27T16:30:29.013 回答
13

你的例子应该这样写:

it 'should respond to ::bar' do
  Foo.should respond_to(:bar)
end
于 2012-04-19T15:12:51.097 回答