簡體   English   中英

如何在Ruby中的FileUtils類下模擬或存根chmod方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM