RSpec (2.12.2)은 제게 힘든 시간을줍니다. ,RSpec은 내 Lib 디렉토리의 루트에있는 클래스 만 볼 수 있습니다.
no such file to load -- test (LoadError)
내 사양이 폴더 구조로 중첩 될 수 있습니다 보인다 : 내 사양 중 하나의 클래스를 참조 할 그 클래스 내 /lib
디렉토리의 루트에없는 경우 오류가 발생합니다 하지만 중첩 된 폴더 (예 : lib/workers/conversion_worker.rb
)에있는 클래스를 필요로하는 순간이 오류가 발생합니다.
모든 스펙에 'spec_helper'가 필요하지만 클래스가 동일한 오류를 발생시키는 경로를 하드 코딩하는 경우조차도 마찬가지입니다.
-lib/
- class_found.rb
- workers/
- class_not_found.rb
사양은 다음과 같습니다 :이 구성에
다음
# spec/workers/class_not_found_spec.rb
require "spec_helper"
require "class_not_found"
describe ClassNotFound do
it "Does something"
end
성공적으로 사양을 실행합니다 (-I 플래그는 $ LOAD_PATH의 경로를 추가합니다) :
$ rspec spec/workers/class_not_found_spec.rb -I /Path/to/project/*
그래서 RSpec은 lib 아래에 아무 것도 추가하지 않는 것 같습니다.
나는 성공적 require_relative를 사용하여 class_not_found.rb을 필요로 할 수 있습니다
require_relative "../../lib/workers/class_not_found.rb" #Succeeds
하지만이 필요로 사용 :
require "lib/workers/class_not_found.rb" # Fails
그래서'spec/lib/workers/class_not_found_spec.rb'라는 파일을 만들고 require 'spec_helper'에 쓰십시오; 모듈 근로자; ClassNotFound를 기술한다. do ... end; 끝 ', rspec이 소스를 찾지 못했습니까? – mdesantis
@ProGNOMmers 질문을 업데이트했습니다. 바라건대 지금은 분명합니다. – Undistraction
귀하의 프로젝트 레일 애플 리케이션입니까? 그렇다면'spec/workers'를'spec/lib/workers '로 옮겨야합니다. – mdesantis