我有一个rails应用程序,里面有一个可安装的引擎。我目前正在为可安装引擎设置rspec测试。这些需要从父应用程序访问模型和帮助程序。我知道这里有一些耦合,但这不是一个可重用的组件,并且该引擎用于提供与父应用程序分开的其他功能。
我能够在从rails new plugin
命令创建的虚拟应用程序中运行这些测试,但是这无法访问父应用程序模型。
如何配置规范帮助程序以便从父应用程序加载模型和配置设置?理想情况下,这将包括父应用程序spec_helper.rb
中的任何配置。
我相信我应该可以使用我的父应用程序而不是虚拟应用程序,但到目前为止还没有成功。在尝试运行我的规范时,我被迫将父应用程序中的所有gem包含到我的引擎Gemfile
中,并为父应用程序中的其他已挂载引擎设置NameError
。
答案 0 :(得分:1)
我们从孩子的spec_helper:
中加载这样的父spec_helperpath = Gem.loaded_specs.select {|k,_| k == 'parent-gem-name'}
.first.last.full_gem_path
file = File.join(path, 'spec', 'spec_helper.rb')
instance_eval File.read(file), __FILE__, __LINE_