에 방법이라는 두 배,에 대한 기대를 인수
문제
내가 만든 두,나는 코드를 실행하는 것 그것을 호출하는 방법과 거대한 해시으로 인수,나를 확인하려면 하나의 열쇠 인수 및 반환 특정이다.
이것은 내가 뭘
before :each do
allow(@my_double).to receive(:do_stuff).and_return({stuff: 42})
end
it "can do stuff" do
expect(@my_double).to receive(:do_stuff) do |arg|
expect(arg).to be_a(Hash)
expect(arg[:my_arg]).to eq(3)
end
TestObject.stuff() # will invoke do_stuff on the double
end
무슨 일,첫 번째 시간 do_stuff
라고 반환합니다 true
는 결과 receive
블록하지만,에 대한 후속 호출(에서 테스트를 올립)그것을 정확하게 반환 {stuff: 42}
하지만 이후 첫 번째 호출은 잘못이 나는 방법 예외를 하려고 하면 전화[:stuff]
에 돌아갑니다.
내가 하려고 하자 allow
의 행동이의 두 배 그래서 나는 원하지 않을 넣어 반환에서의 하단 expect
..그러나 어떤 방법이 있다.
해결책
알 응답이 사용하는 아직 언급되지 않음 인수 matcher hash_including
훨씬 다음과 같 my first comment
expect(@my_double).to receive(:do_stuff).with(hash_including(my_arg: 3))
이 작동합니다.
제휴하지 않습니다 StackOverflow