2016-10-05 15 views
0

嗨,大家好,我真的需要幫助,以瞭解如何在ruby中的FileUtils類下存根或模擬chmod方法。如何在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 /本地文件,這就是爲什麼我要存根或嘲笑這個方法調用路徑的權限。

如果你能幫助我解決這個問題,我會很高興和感激。

快樂編碼傢伙:)

的嘲諷,你必須考慮
+0

您可能想要使用https://github.com/fakefs/fakefs – Stefan

回答

1

一個規則是「你只擁有什麼模擬」。 File和FileUtils你不擁有。如果你真的想要這樣做,你可以嘗試寶石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 

這樣你可以測試一個行爲像你想在注入的對象。

相關問題