에 통과하지, 나는 다음과 같은 테스트 코드를 가지고 :as_null_object 내가 RSpec에 책을 통해 일하고 있어요 두 개의 입력
module Codebreaker
class Game
def initialize(output)
@output = output
end
def start
@output.puts 'Welcome to Codebreaker!'
@output.puts 'Enter a guess:'
end
end
end
나 '때문에 다음 코드에 대응
require 'spec_helper'
module Codebreaker
describe Game do
describe "#start" do
let(:output) { double('output').as_null_object }
let(:game) { Game.new(output) }
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
ve set : double.as_null_object로 출력하고, 예상하지 못한 인수/메소드를 무시할 것으로 기대합니다. 첫 번째 테스트 (환영 메시지 보내기)의 경우, 그것이 수행하는 작업이며 통과합니다. 두 번째 테스트, 그러나 나에게이 오류주고있다 : "에 오신 것을 환영합니다 Codebreaker에"
Failure/Error: output.should_receive(:puts).with('Enter guess:')
Double "output" received :puts with unexpected arguments
expected: ("Enter guess:")
got: ("Welcome to Codebreaker!"), ("Enter a guess:")
# ./spec/codebreaker/game_spec.rb:16:in `block (3 levels) in <module:Codebreaker>'
왜 모두 반환하는 두 배를 그리고 "추측을 입력하십시오"라고 명시 적으로 말했을 때 "추측을 입력하십시오"라고하고,이 동일한 설정/구조를 유지하면서 어떻게 수정할 수 있습니까?