RSpecでコントローラをテストするのが初めてです。私は、対応するモデルにする方法WidgetFeature.find_by_widget_id_group_by_status(widget_id)
をテストしたこれらのコントローラの仕様は十分ですか?
def edit
@widget = Widget.find(params[:id])
if @widget.present?
@all_widgets = Widget.where(:id != @widget.id).select("id, title")
wfs @widget.id
else
redirect_to widgets_url
end
end
と
def wfs widget_id
@all_features,
@existing_features,
@draft_features,
@imported_features = WidgetFeature.find_by_widget_id_group_by_status(widget_id)
end
:私のコントローラでは、私はこれらのメソッドを持っています。
今、私はedit
メソッドをテストする方法と何をテストするのか分かりません。私はスタブ、モック、ダブルスについて知っています。私はレールテストの処方とのRSpecの本に従っています。 私は用語と基本に精通していますが、私はデータを模擬したり工場を作るのは混乱しています。
編集メソッドが実際にwfsメソッドを呼び出すことをテストするにはどうすればよいですか?
UPDATE:
これらは、(SimpleCovによってテスト)、100%のカバレッジを与える私が書かれているいくつかの仕様、です。これは上記の方法をテストする最善の方法ですか?
context " When #edit is called, it" do
it "assigns @all_widgets & other variables if widget for given widget_id is present" do
widget = Factory.create(:widget)
get :edit, :id => widget.id
assigns.each {|a| a.should be_kind_of(Array)}
response.should be_success
response.should render_template("edit")
end
it "redirects_to widgets_url if widget for given widget_id is not present" do
widget = Widget.stub!(:find).with(12)
get :edit, :id => 12
response.should redirect_to(widgets_url)
response.should be_redirect
end
end
コメントは上記のスペック
@leansan:あなたや誰にもあまりにも多くを求めていることは分かっています。しかし、あなたはそれを行う方法の短いスニペットを提供できますか?それは本当に役立つだろう。 – user738184
'Factory.create(:widget)'の代わりに 'mock_model(Widget)'と言うことができます。 – leenasn