require 'rspec' class DevOps attr_reader :monitor def initialize(arguments) @monitor = arguments.fetch(:monitor) { Monitor.new } end def check monitor.ping('DS1') end def noop end end class Monitor def ping(name) "pong #{name}" end end describe DevOps do let(:devops) { DevOps.new(monitor: mock_monitor) } let(:mock_monitor) { mock } it "#monitor called", :wip => true do mock_monitor.should_receive(:ping).with('DS1').and_return(stub.as_null_object) devops.check end it "#monitor not called" do devops.noop end end