我在代码中多次调用 File.expand_path(Rails.root)
为了测试我在规范/支持中创建了以下配置
RSpec.configure do |config|
config.before(:each) do
File.stub(:expand_path).and_return("spec/fs")
end
end
这样对 File.expand_path 的每个请求都不会返回“/home/user/”,而是返回“spec/fs/”
当我在 Rails 3 上时它运行良好
然而,在移到 rails 4 之后,测试开始抛出以下错误:
Failure/Error: let(:category) { build(:category) }
LoadError:
cannot load such file -- spec/fs
为什么会出现/我该如何解决?
附言。
测试/模型是非常基本的,但奇怪的是这个测试用例失败了:
#in class
def first method(category)
"#{File.expand_path(Rails.root)}/public/collections/#{self.name}/_new/#{category.name.downcase}"
end
#in rspec
describe "#first_method" do
it { expect(collection.first_method(category)).to be_instance_of(String) }
end
但这个没有!
#in class
def second_method
"#{File.expand_path(Rails.root)}/public/collections/#{self.name}/_new/"
end
#in rspec
describe "#second_method" do
it { expect(collection.second_method).to be_instance_of(String) }
end
类别工厂很简单:
FactoryGirl.define do
factory :category do
name "TestCategory"
end
end
用简单的方式建造
let(:category) { build(:category) }
然而,似乎存根失败只是在构建 :category 工厂时发生