2009-08-07 4 views
0

I는 다음과 같은 호출하고 사용 해요 : 변수에 대한"should"를 클래스 메소드와 함께 사용 하시겠습니까?

new_count.should eql(10) 

을,하지만 난 File.directory?(my_path) 같은 클래스 메소드와 비슷한 뭔가를 할 수 있습니까?

내가 시도한 File.should be_directory(my_path)의 모든 조합은 Ruby가 File과 일치하는 대신 현재 객체에서 "be_directory"를 찾으려고 시도 할 때 누락 된 메소드로 연결됩니다.

는 내가 주위를 켜고

File.directory?(my_path).should == true 

을 작성할 수 있습니다 알고 있지만 실패 때 정말 가난한 메시지를 제공합니다.

아이디어가 있으십니까?

+0

무엇 실패 메시지이고 당신이 가난한 이유를 생각합니까를? –

답변

0

흠, 아마도 나는 생각이 있습니다.

File 적절한 루비의 일부입니다, 그래서 그것은 예상대로 .should없이 행동을 할 RSpec에의 실패를 설명 할 수있는 C에서 수입 클래스를 처리 할 때 루비의 메타 프로그래밍 도구 중 일부는 분해 C로 작성 요소가있을 수 있습니다.

사실 인 경우 여기에는 실제 해결책이 없습니다. 나는 MockFS 라이브러리를 사용하는 것이 좋습니다 것 :

MockFS이 단점은 당신이 일반적으로 파일을 사용하십시오 사방에 그것을 사용을, 디렉터리 및 Fileutils의는 :

require 'mockfs' 

def move_log 
    MockFS.file_utils.mv('/var/log/httpd/access_log', '/home/francis/logs/') 
end 

거꾸로 특히 코드가 파일 집약적 인 경우, 실제로 복잡한 시나리오를 지정하는 기능이 있으며 느린 파일 시스템을 실제로 만지지 않고도 실행할 수 있습니다. 모든 것은 기억 속에서 일어난다. 더 빠르고 더 완벽한 사양.

호프가 도움이 되길 바랍니다. 행운을 빈다.

0

be_directory이 작동하지 않을지 잘 모르겠습니다. rspec의 어떤 버전을 사용하고 있습니까? 또한 술어가있을 때 rspec의 predicate_matchers 메소드를 사용할 수 있지만 be_predicate으로 올바르게 읽지는 않습니다.

describe File, "looking for a directory" do 

    it "should be directory" do 
    File.should be_directory("foo") 
    end 

    predicate_matchers[:find_the_directory_named] = :directory? 
    it "should find directory" do 
    File.should find_the_directory_named("foo") 
    end 

end 

을 그리고 나에게 다음과 같은 출력 (spec -fs spec.rb 실행) 준 :

는 여기에 내가 시도 무엇

File looking for a directory 
- should be directory 
- should find directory 

Finished in 0.004895 seconds 

2 examples, 0 failures 
관련 문제