Подтвердить что ты не робот

Как утверждать, что класс будет отвечать на метод класса с помощью RSpec?

Скажем, у меня есть определение класса так:

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 не работает в методах класса.

4b9b3361

Ответ 1

Ваш пример должен быть написан следующим образом:

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

Ответ 2

В настоящее время предлагается использовать ожидание, например:

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