내 사양에 Net :: SFTP :: StatusException 오류를 강제로 적용하고 내 코드가이를 트랩하도록 확인하려고합니다.RSpec : 강제로 Net :: SFTP :: StatusException 및 구조 유효성을 검사
코드 :
def process_SFTP(username, password, csvfile)
begin
mySftpWrapper.new
mySftpWrapper.process_CSV_file(csvfile)
rescue RuntimeError => other_problem
logger.info(other_problem.message)
rescue Net::SFTP::StatusException => sftp_problem
logger.info(sftp_problem.message)
end
end
RSpec에가 :
let(:wrapper) { mySftpWrapper.new }
before(:all) do
@wrapper_mock = double('mySftpWrapper')
mySftpWrapper.stub(:new).and_return(@wrapper_mock)
@logger_mock = double('ActiveSupport::BufferedLogger')
end
it "should trap a Net::SFTP::StatusException" do
sftp_response = Object.new
def sftp_response.code; code = 2 end
def sftp_response.message; message = "no such file" end
# Force exception here
@wrapper_mock.stub(:process_SFTP).with("username", "password", "nonexistentfile").and_raise(Net::SFTP::StatusException.new(sftp_response))
# Verify that logger.info received the forced error
@logger_mock.stub(:info).should_receive(/no such file/)
wrapper.process_SFTP("date", "username", "password", "nonexistentfile")
end
그러나, 나는 인터넷을 생성하는 데 사용하는 문 :: SFTP :: StatusException 올바른 예외 ("Net::SFTP::StatusException"
)를 포기하지 않습니다. 대신에 throw합니다 #<Net::SFTP::StatusException: Net::SFTP::StatusException>
올바른 StatusException을 강제로 적용하려면 어떻게합니까?
모든 아이디어를 높이 평가합니다!