Hi Rob, On 27 Jan 2011, at 21:45, Rob Westgeest wrote:
> Hi, > > in rspec-1 view specs i had the ability to say: > > login_as(some_role_or_account) > > which made some helper methods like > > current_account > > that where used in views and controllers return something valuable. > > Implementation was based on the fact that the controller in rspec-1 > was ApplicationController. My ApplicationController contained a method > for setting the current_account. > > In Rspec2 this is broken as the controller in ViewExampleGroup is now > ActionView::TestCase::TestController. > > Would anyone know of an elegant way to add functionality, like helper > methods, to this controller instance in all ViewExampleGroups only. > > option 1, which i don't like because it depends on the fact that > ViewExampleGroup uses ActionView::TestCase::TestController: > > class ActionView::TestCase::TestController > attr_accessor :current_account > helper_method :current_account > end > module RSpec::Rails::ViewExampleGroup > def login_as account > controller.current_account = account > end > end > > I would like to use some hook to add these methods only to the > controller instance used in the view specs, regardless of what class > it is. > > There must be an elegant way, is there? In your spec_helper, you can use the configuration block to tell RSpec to extend (i.e. mix a module in) to each ExampleGroup: RSpec.configure do |config| config.extend(MySpecialLoginMethods) end So you can define your test helper methods like #login_as in a module called MySpecialLoginMethods and then have it mixed in to each example group. You can also filter this, so it only does it to certain types of ExampleGroup. I can't remember exactly what the syntax is for filtering on view specs, but something like this: RSpec.configure do |config| config.extend(MySpecialLoginMethods, :view) end Does that help? cheers, Matt m...@mattwynne.net 07974 430184 _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users