Hi Jon,
Is this a functional or integration test? For functional tests, you would presumably be creating the controller instance in #setup, which means you only get a fresh instance per test, and so if you run through the same action twice in one test, the instance variables would be lying around from the previous one.
It seems like a strange set up you've got there, though, where not only are you redirecting to the same action, but it acts differently depending on whether or not an instance variable has already been set to something. I can only guess, but maybe it would be better to refactor that a little?
Regards, George.