[英]How to mock or stub chmod method under FileUtils class in ruby
嗨,大家好,我真的需要幫助如何在ruby的FileUtils類下存根或模擬chmod方法。
目前,我有此代碼。
def create_file(file)
unless File.exist?(file)
FileUtils.mkdir_p(File.dirname(file), :mode => 0755)
FileUtils.touch file
FileUtils.chmod(0644, file)
end
end
文件位於/usr/local/something_folder/filePath.fileExtension下
這是我為上面的代碼創建的等效測試代碼。
File.stub(:dirname).and_return('fileFullPath')
FileUtils.stub(:mkdir_p).and_return('fileFullPath')
FileUtils.stub(:touch).and_return('fileFullPath')
FileUtils.stub(:chmod).and_return('fileFullPath')
這里的問題是/ usr / local文件路徑下的權限,這就是為什么我要存根或模擬該方法調用的原因。
如果您能幫助我解決這個問題,我將非常高興和感激。
快樂的編碼人員:)
您必須考慮的模擬規則之一是“僅模擬您擁有的東西”。 您不擁有的File和FileUtils。 如果您確實想這樣做,可以嘗試gem fakefs
。 我建議另一個方法:
class YourClass
attr_accessor :file_class, :file_utils_class
def file_class
@file_class ||= File
end
def file_utils_class
@file_utils_class ||= FileUtils
end
def create_file(file)
unless file_class.exist?(file)
file_utils_class.mkdir_p(file_class.dirname(file), :mode => 0755)
file_utils_class.touch file
file_utils_class.chmod(0644, file)
end
end
end
這樣,您可以在測試期間注入行為像您想要的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.