Dont try to call method missing in routes if thats not what we want

If, doing a test like this:

```
class BugTest < ActionView::TestCase
  def test_foo
    omg
  end
```

Will raise with:
```
RuntimeError: In order to use #url_for, you must include routing helpers
explicitly. For instance, `include
Rails.application.routes.url_helpers`.
```

Thats a bit confusing, as we are not calling url_for at all.
This commit is contained in:
Arthur Neves 2015-08-10 20:01:18 +02:00
parent 942f412631
commit 0ffaa56d51
No known key found for this signature in database
GPG Key ID: 04A390FB1E433E17
1 changed files with 9 additions and 3 deletions

View File

@ -263,9 +263,15 @@ module ActionView
end
def method_missing(selector, *args)
if @controller.respond_to?(:_routes) &&
( @controller._routes.named_routes.route_defined?(selector) ||
@controller._routes.mounted_helpers.method_defined?(selector) )
begin
routes = @controller.respond_to?(:_routes) && @controller._routes
rescue
# Dont call routes, if there is an error on _routes call
end
if routes &&
( routes.named_routes.route_defined?(selector) ||
routes.mounted_helpers.method_defined?(selector) )
@controller.__send__(selector, *args)
else
super