method

as_null_object

rspec latest stable - Class: Spec::Mocks::Methods
as_null_object()
public

Record and otherwise ignore all messages that aren’t specified, with stub, stub!, or should_receive.

Returns

  self

1Note

as_null_object working

taimoorchangaiz ยท Jun 3, 20131 thank

It only listen for the messages we tell it to expect and ignore any other messages.

For example:

spec/codebreaker/game_spec.rb

module Codebreaker describe Game do describe "#start" do before(:each) do @output = double('output').as_null_object @game = Game.new(@output) end

  it "sends a welcome message" do
    @output.should_receive(:puts).with('Welcome to Codebreaker!')
    @game.start
  end
  it "prompts for the first guess" do
    @output.should_receive(:puts).with('Enter Guess:')
    @game.start
  end
end
end

end

In first example we are expecting 'Welcone to Codebreaker!' while in second example we expect 'Enter Guess:'

and in before(:each) first line we are using as_null_object which allowing us to only check if expected string exists in game.start method then it will pass.

lib/codebreaker/game.rb

module Codebreaker class Game def initialize(output) @output = output end def start @output.puts 'Welcome to Codebreaker!' @output.puts 'Enter Guess:' end end end