RSpec - насмешка метода класса

Я пытаюсь дразнить метод класса с rspec:

lib/db.rb

class Db
  def self.list(options)
    Db::Payload.list(options)
  end
end

lib/db/payload.rb

class Db::Payload
  def self.list(options={})
  end
end

В моей спецификации я пытаюсь установить дб ожидания:: Payload.list назовут, когда я назову Db.list:

require 'db/payload'

describe Db do
  before(:each) do
    @options = {}
    Db::Payload.should_receive(:list).with(@options)
  end

  it 'should build the LIST payload' do
    Db.list(@options)
  end
end

Проблема состоит в том, что я всегда получаю следующую ошибку:

undefined method `should_receive' for Db::Payload:Class

Любая справка, понимая эту ошибку больше всего ценилась бы :-)

13
задан Chris Kilmer 9 May 2010 в 13:38
поделиться

1 ответ

Ваш spec_helper.rb должен иметь что-то вроде этого:

Spec::Runner.configure do |config|
  # == Mock Framework
  #
  # RSpec uses its own mocking framework by default. If you prefer to
  # use mocha, flexmock or RR, uncomment the appropriate line:
  #
  # config.mock_with :mocha
  # config.mock_with :flexmock
  # config.mock_with :rr
end

Аргумент по умолчанию - config.mock_with: rspec , который включает метод should_receive . Например, если вы используете Mocha, эквивалент ожидает , поэтому убедитесь, что вы используете правильный фреймворк mocking.

13
ответ дан 2 December 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: