2012-03-09 83 views
0

我在西納特拉擴展,做一些設置工作,我想測試已經發生西納特拉延伸 - 與機架測試::測試

擴展代碼看起來像這樣

module Sinatra 
    module Cache 

    # Create a cache 
    module Helpers 

     def cache! 
     **...implementation...** 
     end 

     #check if cached and load from the cache 
     def cached? 
     **...implementation...** 
     end 

     #set some default values at startup - inject some app settings 
     def self.registered(app) 
     app.helpers Sinatra::Cache::Helpers 
     app.set :cache_dir , "/tmp" 
     end 

    end 
    end 

    register Cache 
end 

和測試設置這樣

class TestApp < Sinatra::Base 
    register Sinatra::Cache 

    configure do 
    #set :cache_dir, YAML.load_file(File.expand_path("cache.yml", File.dirname(__FILE__))) 
    end 

    get '/' do 

    end 

end 

class Helper 
    include Sinatra::Cache::Helpers 
end 

class SinatraExtTest < Test::Unit::TestCase 
    include Rack::Test::Methods 
    attr_accessor :helper 

    def app 
    TestApp.new 
    end 

    def setup 
    Sinatra::Base.set :environment, :test 
    @helper = Helper.new 
    end 

    def test_TestApp_loaded 
    get '/' 
    assert last_response, "no response" 
    end 

    def test_ext_available 
    assert @helper.methods.include?(:cache!) 
    end 

    def test_cache_dir_available 
    get '/' 
    assert app.cache_dir 
    end 

end 

我很難得到的應用程序設置保留的高清test_cache_dir_available方法失敗沒有這種方法的原因

有人看到我在做什麼錯了嗎?

回答

0

事實上,在同事的幫助下,通過避免使用TestApp實現並僅使用Sinatra :: Application