RSpec - издевательство над классом
Я пытаюсь высмеять метод класса с помощью rspec:
Библиотека /db.rb
class Db
def self.list(options)
Db::Payload.list(options)
end
end
Библиотека/дб/payload.rb
class Db::Payload
def self.list(options={})
end
end
В моем spec, я пытаюсь настроить ожидание Db:: 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
Любая помощь в понимании этой ошибки была бы наиболее оценена: -)
Ответы
Ответ 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, эквивалент expects
, поэтому убедитесь, что вы используете правильную фальсификацию.