[rspec-users] Spec'ing controller macros

Matt McNeil nabble.108 at xoxy.net
Tue Apr 29 12:48:58 EDT 2008


Hi,

(This is my first post after months of appreciative lurking...)

I'm trying to spec the following conditional controller macro:

class ApplicationController < ActionController::Base
  # turn off session management for robots
  session :off, :if => lambda {|req| req.user_agent =~ /(Google|Slurp)/i }
  # ... 
end

My current attempt seems to be quite unsuccessful: 
1) when I include the controller.should_receive(:session) statement, the
index action no longer seems to be actually called (ie a breakpoint placed
in the index method is not triggered)
2) I receive the following error:
Spec::Mocks::MockExpectationError in 'ApplicationController should turn off
session management for requests made by robot user agent'
Mock 'FooController' expected :session with (:off) but received it with (no
args)
./spec/controllers/application_spec.rb:19:

Any suggestions?

Thanks much,
Matt


describe ApplicationController do 
  class FooController < ApplicationController 
    def index; render :text => "foo"; end 
  end 
  controller_name :foo 

  it "should turn off session management for requests made by robot user
agent" do 
    request.stub!(:user_agent).and_return("Google Robot")
    controller.should_receive(:session).with(:off)
    get :index 
  end 
end

-- 
View this message in context: http://www.nabble.com/Spec%27ing-controller-macros-tp16927457p16927457.html
Sent from the rspec-users mailing list archive at Nabble.com.



More information about the rspec-users mailing list