I'm trying to mock a class method with 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
In my spec, I'm trying to setup the expectation Db::Payload.list will be called when I call 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
The problem is that I am always receiving the following error:
undefined method `should_receive' for Db::Payload:Class
Any help understanding this error would be most appreciated :-)
Your spec_helper.rb should have something like this:
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
The default argument is config.mock_with :rspec which enables the should_receive method. If you're using Mocha, for example, the equivalent is expects, so make sure you're using the right mocking framework.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With