2016-10-05 4 views
0

안녕하세요, ruby의 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/지방 파일 경로에서 권한입니다.

이 문제로 저를 도울 수 있다면 기꺼이 고맙겠습니다.

해피 코딩 사람 : 당신이 고려해야 할 조롱에 대한

+0

https://github.com/fakefs/fakefs를 사용할 수 있습니다. – Stefan

답변

1

하나의 규칙은 "당신이 자신의 것만을 모의"입니다. 소유하지 않은 File 및 FileUtils. 당신이 정말로 그것을 원한다면 당신은 보석 fakefs을 시도 할 수 있습니다. 나는 또 다른 approch를 추천 할 것이다 :

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 

이렇게하면 원하는대로 작동하는 테스트 중에 객체를 삽입 할 수있다.

관련 문제