I’m really, really confused about the use of instance variables in my
controller and their relationship to my controller spec.
I’m trying to spec a controller that has a before_filter :require_member
(it’s Authlogic and set up in ApplicationController. It in turn calls
current_member - which returns/creates the @member variable ) and a
before_filter :find_product
The find_product method is thus …
def find_product
@product = (params[:id]) ? @member.products.find(params[:id]) :
Product.new
end
No matter what I try and in what order, I get the error message …
NoMethodError in ‘ProductsController PUT edit Product cut-off has passed
creates a product object’
undefined method `products’ for nil:NilClass
and it points to the find_product method and it’s the @member that is
nil
I thought that the controller.stub(:require_member).and_return(member)
would
suffice for the require_member stuff but I’m obviously wrong. I’ve even
replaced the member for @member in my spec but to no avail.
Here’s the describe example …
describe “PUT edit” do
context “Product cut-off has passed” do
let(:member) { mock_model(Member).as_null_object }
let(:product) { mock_model(Product).as_null_object }
## I just want it to create a @product object from
it "creates a product object" do
controller.stub(:require_member).and_return(member)
member.should_receive(:products)
get :edit, :id => "1"
end
end
end
If anyone would be able to untangle me, I’d be greatly appreciative.
CIA
-ants