Ответ 1
Ваш пример должен быть написан следующим образом:
it 'should respond to ::bar' do
Foo.should respond_to(:bar)
end
Скажем, у меня есть определение класса так:
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
не работает в методах класса.
Ваш пример должен быть написан следующим образом:
it 'should respond to ::bar' do
Foo.should respond_to(:bar)
end
В настоящее время предлагается использовать ожидание, например:
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