2010-02-10 5 views
5

이것은 내가 가지고있는 것입니다 :rspec을 사용하여 파일의 존재를 조롱하거나 가짜로 만들 수 있습니까?

it "should be able to get a valid directory path" do 
    @asset.some_file_path.should == "/something/test.jpg" 
end 

기존 파일이 없으면 some_file_path는 "/not_here_yet.jpg"를 반환합니다.

def some_file_path 
    if File.exists(self.my_image_path) 
    return my_image_path 
    else 
    return "/not_here_yet.jpg 
    end 
end 

테스트에서 새 파일을 만들고 싶지 않습니다. 파일의 존재를 위조하는 방법이 있습니까?

나는 다음과 같은 것을 생각하고있다.

it "should be able to get a valid directory path" do 
    AwesomeFakeFileCreator.create(@asset.my_image_path) 
    @asset.some_file_path.should == "/something/test.jpg" 
end 

이것이 가능한가? 어떻게 그런 일을 할 수 있습니까?

편집 : FakeFS 조금 보였지만 내 질문에 대한 답변을 잘 모르겠습니다

답변

6

당신이 아마 나는 등 매우 도움이되지 않는 답변입니다

it "should be able to get a valid directory path" do 
    File.stub!(:exists?).and_return(true) 
    @asset.stub!(:my_image_path).and_return("/something/test.jpg") 
    @asset.some_file_path.should == "/something/test.jpg" 
end 
+0

조금 더 자세하게 설명해 주시겠습니까? – marcgg

+1

첫 번째 줄은 파일이 존재 함을 스텁 아웃하고 두 번째 줄은 자산 객체의 my_image_path 메소드를 스텁 아웃하고 파일 경로를 반환하며,이 경우 some_file_path 메소드가 반환합니다. 즉 전체 spec 예제가 무엇인지 반환합니다. 요약하면 경로가 있으면이를 반환하십시오. – nas

+0

당신은 나를 행복하게 해주지 않아도됩니다. 나는 그 질문을하지 않았습니다. 그러나 나는 그것을 이해하지 못했음을 두려워합니다. – Shadowfirebird

-2

의 라인에 뭔가를 할 수

필자가 이해 하듯이 파일 존재 여부와 파일이 존재하지 않는 두 조건 만 테스트하면됩니다.

존재하지 않는 테스트는 충분히 쉽습니다. 존재하지 않는 my_image_path로 자산을 만들고 함수를 점검하면 '/not_here_yet.jpg'가 반환됩니다.

분명히 다른 케이스를 같은 방식으로 테스트 할 수 있습니까? 확장자가 .jpg 인 빈 파일을 만든 다음이를 가리키는 자산을 만들고 함수가 올바른 이름을 반환하는지 확인하십시오.

+0

즉석에서 파일을 만들고 싶지 않습니다. 테스트 속도가 느려질 것이므로 파일을 작성/삭제하는 데 특별한주의를 기울여야합니다. – marcgg

+0

:) 아마 도움이되지 않을 거라고 대답했습니다. – Shadowfirebird

0

가짜 파일의 올바른 경로로 가짜 파일을 만들 수 있습니다. 경로를 반환 할 파일마다 위조하십시오.

it "should be able to get a valid directory path" do 
    File.stub!(:exists?).with("my_image_path.jpg").and_return("my_image_path.jpg") 
    @asset.some_file_path.should == "my_image_path.jpg" 
    end 
관련 문제