我搜索了一下,但我找不到一个很好的解释,所以这是我的问题。
我正在编写一个只添加助手的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 :(得分:2)
将其移至spec/helpers/my_engine_helper_spec.rb
。 rspec-rails
为spec/helpers
中的内容添加了helper
方法。
答案 1 :(得分:1)
我会查看activeadmin如何做到这一点
https://github.com/gregbell/active_admin/blob/master/spec/unit/helpers/settings_spec.rb
这是一款具有高质量测试套件的导轨引擎(我为此做出了贡献)