假设我有类定义,如下所示:
class Foo
def init(val)
@val = val
end
def self.bar
:bar
end
def val
@val
end
end
Run Code Online (Sandbox Code Playgroud)
有一个规格:
describe Foo
it { should respond_to(:val) }
it { should respond_to(:bar) }
end
Run Code Online (Sandbox Code Playgroud)
第二个it断言失败了.从RSpec的文档中我不清楚respond_to应该在类方法上失败.
Art*_*zan 18
现在建议我们使用expect,如下所示:
describe Foo do
it 'should respond to :bar' do
expect(Foo).to respond_to(:bar)
end
end
Run Code Online (Sandbox Code Playgroud)
请参阅: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
Run Code Online (Sandbox Code Playgroud)
如下所述:http://betterspecs.org/#subject
Bra*_*dan 11
你的例子应该这样写:
it 'should respond to ::bar' do
Foo.should respond_to(:bar)
end
Run Code Online (Sandbox Code Playgroud)