2014-03-24 8 views
0

와일드 카드가 포함 된 디렉토리를 스텁하려고합니다 (폴더의 이름 지정 방식에 영향을주는 특정 버전 번호를 모르는 경우). 나는 double()을 사용해 보았고 문제가 발생하여 두 단계 프로세스라고 생각했다 ... 현재 반복에서 나는 와일드 카드를 고려한 파일을 globing하려고 시도했다가 디렉토리가 사실인지 확인했다. . 내가 뭔가 잘못하고 있는거야?Rspec : 배열을 문자열로 변환 할 수 없습니다.

Dir.stub(:exist?).with(dir).and_return(true) 

그러나 Dir.glob가 배열을 반환 : 당신이 Dir.exist? 스텁 할 필요가 같은

it "Return 1.5 is Linux OS and correct version" do 
    Facter.fact(:kernel).stubs(:value).returns("linux") 
    dir = Dir.glob("/opt/athena-*/bin/runner") 
    Dir.exist?(dir).and_return(true) 
    Facter::Util::Resolution.stubs(:exec).with('runner -version').returns("Version: 1.5") 
    Facter.fact(:version).value.should == "1.5" 
end 

답변

0

이 보인다. 어쩌면 첫 번째 것만 원합니까? :

dir = Dir.glob('/opt/athena-*/bin/runner').first 

여기에서 테스트하려고하는 것은 분명하지 않습니다.

+0

파일이 디렉토리에 있는지 확인하려고하지만 디렉토리가 athena 버전에 따라 변경되므로'/ opt/athena-1.4/bin/runner' 또는'/ opt/athena-3.6/bin/runner' – user3455953

+0

아직도 혼란 스럽네요 -이게 RSpec과 어떤 관련이 있죠? – zetetic

+0

이 디렉토리가 테스트의 일부로 존재하는지 확인해야하는 테스트 케이스가 있습니다. – user3455953

관련 문제