为什么我不能测试是否解决了正确的通用视图?
Why can't I test if correct generic view is resolved?
我正在尝试进入 TDD。按照哈利·珀西瓦尔 (Harry Percival) 的书,我想一步一步来。所以我的第一个单元测试应该是检查是否...
found = resolve("/")
确实调用了正确的函数。所以我做了这个断言:
self.assertEqual(found.func, ListView.as_view())
但它告诉我:
AssertionError: <function ListView at 0x3389668> != <function ListView at 0x35c1e60>
为什么函数不匹配?
ListView.as_view()
在每次调用时生成新的视图函数对象。因此 urls.py
中生成的函数与您的测试中生成的函数不同。
您可以在 views.py
中创建一次视图函数并在 urls.py
和 tests.py
中引用它:
views.py
home_view = ListView.as_view()
urls.py
url(r'^$', views.home_view, name='home'),
tests.py
self.assertEqual(found.func, views.home_view)
您可以查看 __class__
(as it is done under-the-hood for the django debug page):
self.assertEqual(found.func.__class__, ListView)
我正在尝试进入 TDD。按照哈利·珀西瓦尔 (Harry Percival) 的书,我想一步一步来。所以我的第一个单元测试应该是检查是否...
found = resolve("/")
确实调用了正确的函数。所以我做了这个断言:
self.assertEqual(found.func, ListView.as_view())
但它告诉我:
AssertionError: <function ListView at 0x3389668> != <function ListView at 0x35c1e60>
为什么函数不匹配?
ListView.as_view()
在每次调用时生成新的视图函数对象。因此 urls.py
中生成的函数与您的测试中生成的函数不同。
您可以在 views.py
中创建一次视图函数并在 urls.py
和 tests.py
中引用它:
views.py
home_view = ListView.as_view()
urls.py
url(r'^$', views.home_view, name='home'),
tests.py
self.assertEqual(found.func, views.home_view)
您可以查看 __class__
(as it is done under-the-hood for the django debug page):
self.assertEqual(found.func.__class__, ListView)