Adjusted CBV resolver_match example in testing tools docs.
The view_class is available on the view callback, allowing that to be checked, rather than the __name__.
This commit is contained in:
parent
f38c3cbadc
commit
d15a10afb5
|
@ -541,12 +541,12 @@ Specifically, a ``Response`` object has the following attributes:
|
|||
You can use the :attr:`~django.urls.ResolverMatch.func` attribute, for
|
||||
example, to verify the view that served the response::
|
||||
|
||||
# my_view here is a function based view
|
||||
# my_view here is a function based view.
|
||||
self.assertEqual(response.resolver_match.func, my_view)
|
||||
|
||||
# class-based views need to be compared by name, as the functions
|
||||
# generated by as_view() won't be equal
|
||||
self.assertEqual(response.resolver_match.func.__name__, MyView.as_view().__name__)
|
||||
# Class-based views need to compare the view_class, as the
|
||||
# functions generated by as_view() won't be equal.
|
||||
self.assertIs(response.resolver_match.func.view_class, MyView)
|
||||
|
||||
If the given URL is not found, accessing this attribute will raise a
|
||||
:exc:`~django.urls.Resolver404` exception.
|
||||
|
|
|
@ -32,6 +32,7 @@ from django.test import (
|
|||
)
|
||||
from django.urls import reverse_lazy
|
||||
from django.utils.decorators import async_only_middleware
|
||||
from django.views.generic import RedirectView
|
||||
|
||||
from .views import TwoArgException, get_view, post_view, trace_view
|
||||
|
||||
|
@ -213,6 +214,14 @@ class ClientTest(TestCase):
|
|||
response = self.client.get('/get_view/')
|
||||
self.assertEqual(response.resolver_match.url_name, 'get_view')
|
||||
|
||||
def test_response_resolver_match_class_based_view(self):
|
||||
"""
|
||||
The response ResolverMatch instance can be used to access the CBV view
|
||||
class.
|
||||
"""
|
||||
response = self.client.get('/accounts/')
|
||||
self.assertIs(response.resolver_match.func.view_class, RedirectView)
|
||||
|
||||
@modify_settings(MIDDLEWARE={'prepend': 'test_client.tests.middleware_urlconf'})
|
||||
def test_response_resolver_match_middleware_urlconf(self):
|
||||
response = self.client.get('/middleware_urlconf_view/')
|
||||
|
|
Loading…
Reference in New Issue