2010-02-20 3 views
3

내가 원하는 것은 각 스펙 파일에서 테스트중인 클래스를 '요구'할 필요가없는 방법이다.Rspec, 테스트중인 루비 파일에 spec 파일 매핑하기

그래서 테스트 할 소스 코드의 루트를 설정하고 테스트를 자동으로 매핑하는 rspec이나, 스펙을 자동으로 루비 파일에 매핑하는 다른 방법이 있기를 바란다.

레일스 용 Rspec에서 이것은 마술처럼 발생하지만 레일스 프로젝트가 아니므로 유용한 정보를 찾을 수 없습니다.

답변

3

을 나는 당신이 당신이 프로젝트 내에서 lib 폴더 및 스펙 폴더가 가정입니다 코드 및 사양을 각각 나타냅니다. 지금 당신은 그냥 레일처럼

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') 
+0

을 다음 줄을 추가해야하고 각 상단의 spec_helper을 필요로하는 불리한있어 경우 spec/spec_helper.rb를 작성하고 개별 사양 파일 내에서 지금

# project_name/spec/spec_helper.rb $: << File.join(File.dirname(__FILE__), "/../lib") require 'spec' require 'main_file_within_lib_folder_that_requires_other_files' 

를 추가 spec 파일을 사용하면 spec -r spec/spec_helper.rb (또는 rake spec 작업에서 해당 -r 옵션을 사용하도록 수정)을 사용하여 사양을 실행할 수 있습니다. –

+0

자동 테스트를 사용하는 경우는 어떻습니까? – nas

0

Object.const_missing을 다시 정의해야합니다. 이 기본 example 발견

, (등 올바른 경로를 설정) 필요에 맞게 수정 :

def Object.const_missing(name) 
    @looked_for ||= {} 
    str_name = name.to_s 
    raise "Class not found: #{name}" if @looked_for[str_name] 
    @looked_for[str_name] = 1 
    file = str_name.downcase 
    require file 
    klass = const_get(name) 
    return klass if klass 
    raise "Class not found: #{name}" 
end 
관련 문제