2016-10-05 4 views
0

こんにちは、私は実際にルビーのFileUtilsクラスでchmodメソッドを助ける方法について助けが必要です。ruby​​のFileUtilsクラスでchmodメソッドをモックまたはスタブする方法

現在、私はこのコードを持っています。 ファイルが/usr/local/something_folder/filePath.fileExtension

下にあり、これは、私は上記のそのコード用に作成した同等のテストコードです

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 

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ファイルパスの下で許可されます。

この問題で私を助けることができれば幸いです。あなたが考慮しなければならないあざけるため

ハッピーコーディングみんな:)

+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 

このようにして、テスト中に必要なように動作するオブジェクトを挿入することができます。

関連する問題