如何在Rails项目的Rspec测试中获取gem的根目录?
我有一个宝石,我们将其称为ToastMitten
,我将其包含在我的Rails应用程序中。我正在为ToastMitten
写一些测试,我需要加载一个文件,并且我想从gem的根目录指定一个路径。如何在Rails项目的Rspec测试中获取gem的根目录?
我刚刚尝试使用Rails.root.to_s
,但这给了我一些像/Users/me/projects/toastmitten/spec/dummy
。我本来预计这条路将以toastmitten/
结束。
我在做什么错?
Rails.root.parent.to_s
如果它总是回馈您的虚拟Rails应用程序,请向上移动到父项。
看起来您正在使用Rails引擎(由enginex生成,因此是spec文件夹中的虚拟应用程序)。如果您需要要求您的测试文件中使用绝对路径,可以使用以下命令:
file = File.expand_path(File.join(File.dirname(__FILE__), 'path', 'to', 'file.ext'))
root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
你可以对你在哪里试图要求该文件具体些吗? 此外,根示例可能需要更多..
's。
在一个Rspec测试中,有几个文件夹位于'spec'的深处,我试图加载一个'spec/fixtures'文件。 – 2011-03-31 21:28:01
可以说规格是'spec/f1/f2/blah_spec.rb'你要使用'File.expand_path(File.join(File.dirname(__ FILE__),'..','..','夹具','file.txt'))' – Adam 2011-03-31 21:34:36
这给了我'spec'文件夹,在这种情况下工作,但这是你所期望的? – 2011-03-31 21:28:35
是的,这是我所期望的。用虚拟应用测试Rails插件/ gems有点痛苦。我为一个项目做了它,改变设置是非常乏味和令人沮丧的。 – 2011-03-31 21:33:44