Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Mock Simple FTP
# add in a before(:all) in your test suite for example
ls_command = [
"-rw-r--r-- 1 ftp ftp 671686268 Feb 21 03:14 some_file",
"drw-r--r-- 1 ftp ftp 671686268 Feb 21 03:14 directory",
# ...
]
class FakeFtp < OpenStruct
# So that for example fake_ftp.chdir("path/to/dir") will be send as fake_ftp.chdir
def method_missing(method, *args)
self[method]
end
end
@fake_ftp = FakeFtp.new({
pwd: "/some/folder",
chdir: true,
list: ls_command,
getbinaryfile: "binary_file_data",
gettextfile: "text_file_data",
# add anything here really
})
# rspec type mock, make sure Net::Ftp.new will return our fake ftp object
allow(Net::FTP).to receive(:new) { @fake_ftp }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment