On 16-apr-2008, at 16:53, Andy Croll wrote: > Bart Zonneveld wrote: >> On 16-apr-2008, at 13:57, Andy Croll wrote: >>> Is there a way to specify which layout an action should use in a >>> controller? >> >> Off the top of my head, not tested: >> >> describe MyController do >> it "should use the foo layout" do >> MyController.should_receive(:layout).with("foo") >> load("app/controllers/my_controller") >> end >> end >> >> but I'm sure there's a more BDD way to do it (TIMTOWTDI goes >> BDDWTDI ?). >> >> greetz, >> bartz > > > Tried it. No dice it seems > > So I then tried: > > it "should use the admin layout" do > controller.should_receive(:layout).with("admin") > end > > And I get... > > 1) > Spec::Mocks::MockExpectationError in 'Admin::ProductsController should > use the admin layout' > Mock 'Admin::ProductsController' expected :layout with ("admin") once, > but received it 0 times > > I'm not doing the load ... command you suggested. What is the thinking > behind that? I'm finding that testing using RSpec demands you > understand > a lot more of what is going on inside the framework!
That kind of makes sense, since should_receive's should be defined *before* something happens. So, slightly diverting here, but say a Post should receive find(:all) when you go to index/, it would look something like: describe PostsController do it "should find all posts" do Post.should_receive(:find).with(:all) get "index" end end The "trick" I gave you above was based on this one: http:// www.nabble.com/Testing-that-a-model-helper-method-is-called- td15856651.html Perhaps you should try giving the full path to load, eg. load (RAILS_ROOT + "/app/controllers/my_controller.rb"). greetz, bartz _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users