as_null_object()
public
Record and otherwise ignore all messages that aren’t specified, with stub, stub!, or should_receive.
Returns
self
Register or
log in
to add new notes.
taimoorchangaiz -
June 3, 2013 - (1.3.0 - 1.3.1)
1 thank
as_null_object working
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