2016-10-05 80 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 

这样你可以测试一个行为像你想在注入的对象。

相关问题