2012-10-27 128 views
3

我查了一下,但是找不到一個好的解釋,所以這裏是我的問題。用rspec測試rails引擎助手

我正在寫一個Rails引擎,只添加助手。

的結構是這樣的(重要的部分):

my_engine/ 
    -- app/ 
    -- helpers/ 
     -- my_engine/ 
      -- my_engine_helper.rb 
    -- spec/ 
    -- dummy/ 
    -- spec_helper.rb 

spec_helper.rb如下:

# Configure Rails Envinronment 
ENV['RAILS_ENV'] = 'test' 
require File.expand_path('../dummy/config/environment.rb', __FILE__) 

require 'rspec/rails' 

ENGINE_RAILS_ROOT = File.join(File.dirname(__FILE__), '../') 

# Requires supporting ruby files with custom matchers and macros, etc, 
# in spec/support/ and its subdirectories. 
Dir[File.join(ENGINE_RAILS_ROOT, 'spec/support/**/*.rb')].each { |f| require f } 

RSpec.configure do |config| 
    config.use_transactional_fixtures = true 
end 

到目前爲止好,但我不知道如何測試我的幫手。 我想知道什麼是最好的方式:

  • 組織的測試文件
  • 測試虛擬應用程序可以使用助手
  • 測試助手自己

現在運行規格時出現以下錯誤:

undefined local variable or method `helper' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007fcee8b0f4a0> 

用以下測試:

require 'spec_helper' 

module MyEngine 
    describe MyEngineHelper do 
    describe '#something' do 
     it "does something" do 
     helper.something.should be_true 
     end 
    end 
    end 
end 

謝謝!

+0

凡位於相對規範的spec目錄? –

+0

另外,你可以只需要'require'spec_helper'。 –

+0

好吧,我更新了規範。我將spec定位在spec/my_engine/my_engine_helper_spec.rb中,但我不知道它是否正確。 – Happynoff

回答

2

將它移動到spec/helpers/my_engine_helper_spec.rbrspec-railsspec/helpers中加入了helper方法。