Я думаю, что вы уже сделали тонкий контроллер, поместив запрос в именованную область, где он может быть повторно использован. Вот код, который я использовал до того, как начал использовать именованные области.
def mock_comm(stubs={})
@mock_comm ||= mock_model(Comm, stubs)
end
describe "responding to GET index" do
it "should expose all comms as @comms" do
Comm.should_receive(:find).with(:all).and_return([mock_comm])
get :index
assigns[:comms].should == [mock_comm]
end
# ...
Я бы, вероятно, написал код, очень похожий на тот, что у вас уже есть, но, возможно, поместил бы его в помощник, который позволит мне использовать его повторно. Другая вещь заключается в использовании другой среды для насмешек, которая может дать вам больше контроля. Взгляните на Railscast Райана Бейтса на RSpec - сейчас он немного устарел, но у него все еще есть хорошие идеи.