3

我搜索了一下,但我找不到一个很好的解释,所以这是我的问题。

我正在编写一个只添加助手的 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

谢谢 !

4

2 回答 2

2

将其移至spec/helpers/my_engine_helper_spec.rb. 有rspec-rails一个钩子spec/helpers可以添加helper方法。

于 2012-10-28T22:29:33.673 回答
1

我会看看 activeadmin 是如何做到这一点的

https://github.com/gregbell/active_admin/blob/master/spec/unit/helpers/settings_spec.rb

这是一个带有非常高质量测试套件的 Rails 引擎(我为它做出了贡献)

于 2012-10-29T15:41:17.233 回答