I’m trying to create a functional test where the controller action (for
now, anyway) breaks apart a string and populates intermediate variables
with the results. I want to check the intermediate vars in my test, so I
tried the following
(in the controller)
def string_action
do some processing, etc.
@string_segment = “howdy”
end
(in the unit test)
def test_the_string_doohicky
post :string_action, … some params here, etc.
assert_equal “howdy”, assigns[“string_segment”]
end
The assigns[] always comes up nil, so I must be missing something here.
Any pointers?
TIA,
Keith
DANG - I posted this in the wrong place :-(. Sorry
Keith
I think you want this instead:
assert_equal “howdy”, assigns(:string_segment)
Lance
(in the unit test)
def test_the_string_doohicky
post :string_action, … some params here, etc.
assert_equal “howdy”, assigns[“string_segment”]
end
What happens if you use
assigns(:string_segment)
instead?
–
On 1/20/06, Lance B. [email protected] wrote:
I think you want this instead:
assert_equal “howdy”, assigns(:string_segment)
Lance
Bad form to follow up my own post, but I’ll elaborate.
You don’t necessarily have to use a symbol, you could use the
“string_segment” string if you want, but all of the cool kids use
symbols.
I am not sure when the assigns hash changed to a method call, but the
info
in this doc seems to be outdated (
Peak Obsession). If you look at
the
rails code, action_controller/test_process.rb has this method:
module Test
module Unit
class TestCase #:nodoc:
…
def assigns(key = nil)
if key.nil?
@response.template.assigns
else
@response.template.assigns[key.to_s]
end
end
…
end
So it appears that the hash itself has moved into @response.template and
that you’re calling this method when you are testing for assignments in
your
controller tests.
Lance