mock(name, stubs_and_options={}) public

Shortcut for creating an instance of Spec::Mocks::Mock.

name is used for failure reporting, so you should use the role that the mock is playing in the example.

stubs_and_options lets you assign options and stub values at the same time. The only option available is :null_object. Anything else is treated as a stub value.

Examples

  stub_thing = mock("thing", :a => "A")
  stub_thing.a == "A" => true

  stub_person = stub("thing", :name => "Joe", :email => "joe@domain.com")
  stub_person.name => "Joe"
  stub_person.email => "joe@domain.com"
Show source
Register or log in to add new notes.
June 4, 2009
2 thanks

A typical usage for a mock

You want to use a mock when you’re testing a behaviour of one of your methods that interacts with some outside world service (eg. an FTP server).

it "should login to ftp server" do
  ftp = mock('Ftp server', :null_object => true)
  Net::FTP.should_receive(:new).and_return(ftp)
  ftp.should_receive(:login).with('username', 'password')
  some_obj.connect
end

def connect
  session = Net::FTP.new('server.com')
  session.login('username', 'password')
  session.close
end