-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"@controller is nil" error in ActionController::TestCase #5
Comments
A workaround / solution is to assign @controller an instance of the controller you're testing in a block passed to setup(). |
Is this gem so awesome, that no one maintains it anymore? |
It is indeed disheartening, @retr0h. There is always opportunity for improvement / increasing popularity! |
I wrote the following monkeypatch to automate @robgleeson's suggestion of setting class ActionController::TestCase
def self.context *args, &block
super *args do
setup do
# establish the rails controller being tested
# https://github.com/citrusbyte/contest/issues/5#issuecomment-677003
ancestors = self.class.ancestors
test_case = ancestors[ancestors.index(ActionController::TestCase) - 1]
@controller = test_case.controller_class.new
end
class_eval &block
end
end
end Put that in your |
When using context() inside an ActionController::TestCase, I get the following error:
Here is an example of what my test file looks like:
The error is happening because context() creates a new Test::Unit::TestCase derived class whose name does not contain "ExamplesController", and so Rails becomes confused when it tries to automatically set
@controller
inside of the context() body.Thanks for your consideration.
The text was updated successfully, but these errors were encountered: