문제

그래서 나는 Rspec 테스트를 쓰고, 저는 루비 이해의 부족으로 당혹 스럽습니다.

다음과 같이 보이는 파일 구조가 있습니다.

  • gui_tests / tests / test_spec.rb
  • gui_tests / windows_gui.rb
  • gui_tests / upload_tool.rb

test_spec.rb 파일에 대한 사양을 실행하면 upload_tool 파일이 다음과 같이 포함될 필요가 있습니다 :

spec -r ../upload_tool -fs test_spec.rb
.

그런 다음 upload_tool은 windows_gui.rb가 필요합니다.

require '../windows_gui'
.

내 질문은 upload_tool.rb가 아닌 test_spec.rb (../ 필요)에 상대적으로 Windows_GUI.rb를 참조 해야하는 이유는 무엇입니까? 이것은 나에게 잘못 느껴져, upload_tool.rb를 테스트 사양의 컨텍스트에서 사용하고 싶습니다. 즉, 매번 요구 사항을 변경하는 것을 의미합니다.

분명히 누락되었지만 테스트 사양에 비례하여 참조하지 않으면 파일을 찾을 수 없습니다.

여기에 너무 무지해서 죄송합니다. 그러나 나는 빈 손으로오고 있습니다. 어떤 생각이 감사드립니다.

bb

도움이 되었습니까?

해결책

당신은 그렇지 않습니다.requires는 현재 디렉토리에 상대적이며, 귀하의 경우는 GUI_Tests/Tests입니다.대신이 작업을 수행 한 경우 :

cd ..
spec -r upload_tool -fs Test/test_spec.rb
.

이를 사용해야합니다.

require 'windows_gui' # without '../'
.

해당 문제를 해당하는 가장 일반적인 방법은 File.dirname(__FILE__)를 사용하는 것입니다.

require File.join(File.dirname(__FILE__), '..', 'windows_gui')
.

참고 : Ruby 1.9.2는 기본값이 변경되어야합니다. ruby : vs require_relative가 필요합니다 - ruby <1.9.2 및>= 1.9.2에서 실행중인 해결 방법에 대한 모범 사례

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top