Я пытаюсь дразнить метод класса с 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
Любая справка, понимая эту ошибку больше всего ценилась бы :-)
Ваш 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.