(高速) テスト目的でクラスを宣言することは素晴らしいことです。
require 'fast_helper'
require 'site_search'
class Post; end # This allows not to load the whole Rails env
describe SiteSearch do
it "searches on posts" do
Post.stub_chain(:scoped, :by_term).with("ruby").and_return ["post1", "post2"]
SiteSearch.by_term("ruby").should == ["post1", "post2"]
end
end
問題は、仕様のスイート全体を実行すると、Rails モデルのオートロードが壊れるように見えることです。
クラスが以前に宣言されると、モデルはロードされなくなります。
アンロードされた依存関係を注入する方法は 4 つあります。
- クラスを宣言します (ここの例のように)
- const の設定/削除
- ラッパー メソッドをスタブする
- 実際にロードする
1枚目だけ使いたい。
質問:クラスが既に宣言されている場合でも、同じ仕様構造を維持しながら、レールに実際にモデルをロードするように指示するにはどうすればよいですか?