私のコードには 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
なぜ表示されるのですか / どうすれば修正できますか?
ps。
テスト/モデルは非常に基本的なものですが、奇妙なことに、このテスト ケースは失敗します。
#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 ファクトリの構築中にスタブ障害が発生したようです