Skip to content

Instantly share code, notes, and snippets.

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)
@fake_ftp ={
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 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