내 프로그램이 웹에서 zip 파일을 다운로드 한 다음 파싱합니다. 관련 분석 관련 코드는 다음과 같습니다RSpec mock/stub에서 다른 매개 변수 값을 사용하는 방법은 무엇입니까?
내 RSpec에 테스트 환경에서Zip::File.open("real_file.zip") do |zip_file|
# do stuff
end
, 내가 대신 진짜의 가짜/모의 파일을 구문 분석이 코드를 스텁 싶습니다. 특히, 매개 변수 값 "real_file.zip"을 "mock_file.zip"으로 바꾸고 싶습니다.
나는 다음과 같은 접근 시도 :allow(Zip::File).to receive(:open).and_return(Zip::File.open("mock_file.zip"))
을 ... 그러나 이것은 블록 (# do stuff
) 내부 코드의 실행을 방지 할 수 있습니다. 모의 파일 내용이 이 되려면이 반환되지만 나중에 사용하려면 zip_file
값을 할당해야합니다. 어떻게이 일을 성취 할 수 있습니까? 당신이 여기서하고있는 것은 원래의 코드 블록에 값을 산출한다
mock_file = Zip::File.open('mock_file.zip')
allow(Zip::File).to receive(:open) { |&block| block.call(mock_file) }
:
난 당신이 (우편 :: 파일) 수'싶은 생각은받을 .TO block.call (Zip :: File.open ('mock_file.zip'))}' https://www.relishapp.com/rspec/rspec-mocks/v/3-2/docs/configuring-responses/ 블록 구현 # 호출자의 블록 – mroach