2011-07-27 5 views
4

나는 우리 회사의 인증 및 권한 부여 시스템에 연결하기 위해 사용자 정의 루비 보석을 작성했으며 보석에 대한 단위 테스트를 개발하기 시작했습니다.Rspec을 사용한 보석 테스팅

레일 앱에서 보석은 environment.rb과 구성 값이 포함 된 사용자 정의 초기화 프로그램 및 yaml 파일을 통해 구성 할 수 있습니다.

독립형 보석을 테스트하기 위해 Gem in Rail의 구성을 변환해야합니다. 이것을 어떻게 Rspec으로 변환하여 통합 테스트를 수행합니까? 당신이 있다면, 무엇보다도 multiplier

처음이자 : 레일

보석 구성 여기

# environment.rb 
MyGem.configure do |config| 
    config.url = MY_CONFIG ['url'] 
    config.application_name = MY_CONFIG ['app_name'] 
    config.application_id = MY_CONFIG ['app_id'] 
    config.logger = Rails.logger 
    config.log_level = :debug 


# Rails config/initalizers/load_config.rb 
# Custom config file loading automatically done via initializers 
MY_CONFIG = YAML.load_file("#{Rails.root.to_s}/config/my_config.yml")[Rails.env] 

# config/my_config.yml 
defaults: &defaults 
    url: http://url/to/service 
    app_name: my app 
    app_id: 1 

development: 
    <<: *defaults 

test: 
    <<: *defaults 

production: 
    <<: *defaults 

+0

아무런 문제가 없습니다. 작동하지 않는 것은 무엇입니까? – tjeden

+0

처음에는 분명하지 않았습니다. 레일 환경을 가진 보석이 아니라 보석 자체를 테스트하려고합니다. –

답변

6

당신은 당신이 그것을 수행하여 가고 싶어 방법을 볼 수있는 간단한 프로젝트의 귀하가 직접 보석 관리을하고 있습니다.하지 말고 jeweler과 같은 도우미 도구를 사용하십시오. (여기서이와

jeweler --rspec your_gem_name 

, 그것은 설치에 하나의 주요 파일이 것 해골 보석을거야 : 보석 보석을 설치 (보석은 보석 설치) 그리고 당신이 그것을 설치하면, 당신의 보석 인텔리을 만들 필요한 젬 파일이 필요합니다.) 그리고 spec 폴더. 여기에, 그래서

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) 
$LOAD_PATH.unshift(File.dirname(__FILE__)) 
require 'rspec' 
require 'multiplier' 

# Requires supporting files with custom matchers and macros, etc, 
# in ./support/ and its subdirectories. 
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f} 

RSpec.configure do |config| 

end 

Multiplier.configure do |config| #these are the only lines I added myself 
    config.multiplier 4 
end 

우리의 보석에 대한 설정을 살고,하지만 당신은에 그것을 할도 수 : spec_helper.rb 거기에 사양 폴더에서

, 즉 우리의 구성 삶, 내가했던 것은 어디 있어요 당신이 필요하다면 각 사양. 그러나 모든 사양에 대해 단일 구성을 사용하려는 경우 여기에 배치해야합니다.

+0

테스트를 이동하려면 개별 사양에 추가해야하지만이 디자인이 더 좋습니다. 보석은 도구로 이미 만들어졌지만 정보를 제공해 주셔서 감사합니다! 관심있는 분들을 위해 추가 정보 @ https://github.com/radar/guides/blob/master/gem-development.md를 찾았습니다. –

+0

번들러를 사용하여 보석을 관리 할 수도 있습니다 :'bundle gem new_gem' –

관련 문제