2011-08-13 4 views
0

를로드 테스트 : 단위 루비와 방법은 특정 보석 (로즈)가 필요합니다보석에게 제가 테스트와 나는 시험에 노력하고 프레임 워크에 대한 테스트 :: 기기를 사용하는 것을 시도하고있다

는 사람이 어떻게 제안 할 수 있습니다 내 테스트를 실행할 때로드 보석을 얻을 수 있습니다

업데이트 : 오류 메시지

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- rho (LoadError) 
     from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require' 
     from ../../app/Settings/controller.rb:1 
     from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
     from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require' 
     from ../test_helper.rb:4 
     from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
     from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require' 
     from test_settings.rb:4 

내 단위 테스트 용도는 다음이 포함 된 test_helper.rb을 포함해야

$: << "../../app" 
require 'rubygems' 
require 'rhodes' 
require 'test/unit' 
require 'Settings/controller' 

설정/컨트롤러는 응용 프로그램에 살고

require 'rho' 
require 'rho/rhocontroller' 
require 'rho/rhoerror' 
require 'helpers/browser_helper' 

class SettingsController < Rho::RhoController 
    include BrowserHelper 

    def index 
    @msg = @params['msg'] 
    render 
    end 

    def login 
    @msg = @params['msg'] 
    render :action => :login, :back => '/app' 
    end 

    def login_callback 
    errCode = @params['error_code'].to_i 
    if errCode == 0 
     # run sync if we were successful 
     WebView.navigate Rho::RhoConfig.options_path 
     SyncEngine.dosync 
    else 
     if errCode == Rho::RhoError::ERR_CUSTOMSYNCSERVER 
     @msg = @params['error_message'] 
     end 

     if [email protected] || @msg.length == 0 
     @msg = Rho::RhoError.new(errCode).message 
     end 

     WebView.navigate (url_for :action => :login, :query => {:msg => @msg}) 
    end 
    end 

    def do_login 
    if @params['login'] and @params['password'] 
     begin 
     SyncEngine.login(@params['login'], @params['password'], (url_for :action => :login_callback)) 
     render :action => :wait 
     rescue Rho::RhoError => e 
     @msg = e.message 
     render :action => :login 
     end 
    else 
     @msg = Rho::RhoError.err_message(Rho::RhoError::ERR_UNATHORIZED) unless @msg && @msg.length > 0 
     render :action => :login 
    end 
    end 

    def logout 
    SyncEngine.logout 
    @msg = "You have been logged out." 
    render :action => :login 
    end 

    def reset 
    render :action => :reset 
    end 

    def do_reset 
    Rhom::Rhom.database_full_reset 
    SyncEngine.dosync 
    @msg = "Database has been reset." 
    redirect :action => :index, :query => {:msg => @msg} 
    end 

    def do_sync 
    SyncEngine.dosync 
    @msg = "Sync has been triggered." 
    redirect :action => :index, :query => {:msg => @msg} 
    end 
end 

답변

0

편집이 포함되어 있습니다 : 코드보고 후, 나는 다음과 같은 일을해야 믿습니다

는 test_helper

require 'rubygems' 
require 'rhodes' 

에서 라인을 이동 설정/컨트롤러의 맨 위로

또는 동적으로로드하는 중입니까? tup/teardown (아마도 상충하는 의존성 등을 피하기 위해)?

편집 : Watir 클래스 (IE 브라우저의 UI 조작기)에 간단한 래퍼를 테스트하는 빠른 예제를 작성했습니다.

require 'rubygems' 
require 'watir' 

require 'test/unit' 

class WatirWrapper 
    def initialize() 
     @browser = Watir::IE.new() 
    end 

    def method_missing(sym, *args, &block) 
     @browser.send(sym, *args, &block) 
    end 
end 

class WatirWrapperTest < Test::Unit::TestCase 
    def test_goto 
     @ww = WatirWrapper.new() 
     @ww.goto('http://www.google.com/') 
     assert_equal('http://www.google.com/', @ww.url()) 
    end 
end 
+0

덕분에 나는 아직도 예컨대이 요구하는 보석의 일부 파일을로드 할 수있을 것하지 않는 노력 '(ρ)' –

+0

오류 메시지는 무엇을 말하는가? 참고 : 원래 코드 만 입력하면됩니다. 원래 코드는 종속성 젬을 자동으로로드해야합니다. – peakxu

+0

~ 도움을 주셔서 감사합니다. 자세한 내용으로 질문을 편집 해 주셔서 감사합니다. 사과에 대해 매우 신의를 기합니다. –