如何从轨道引擎的rspec测试中的父应用程序访问模型?

时间:2014-01-15 18:26:45

标签: ruby-on-rails rspec ruby-on-rails-3.2

我有一个rails应用程序,里面有一个可安装的引擎。我目前正在为可安装引擎设置rspec测试。这些需要从父应用程序访问模型和帮助程序。我知道这里有一些耦合,但这不是一个可重用的组件,并且该引擎用于提供与父应用程序分开的其他功能。

我能够在从rails new plugin命令创建的虚拟应用程序中运行这些测试,但是这无法访问父应用程序模型。

如何配置规范帮助程序以便从父应用程序加载模型和配置设置?理想情况下,这将包括父应用程序spec_helper.rb中的任何配置。

我相信我应该可以使用我的父应用程序而不是虚拟应用程序,但到目前为止还没有成功。在尝试运行我的规范时,我被迫将父应用程序中的所有gem包含到我的引擎Gemfile中,并为父应用程序中的其他已挂载引擎设置NameError

1 个答案:

答案 0 :(得分:1)

我们从孩子的spec_helper:

中加载这样的父spec_helper
path = 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_