以前にビューのテストをいくつか作成しました。そのように
class TestUserRegistrationViewUserCreate(APITestCase):
def setUp(self):
self.factory = APIRequestFactory()
def test_create_user(self):
data = {
'phone_number': '+79513332211',
'password': 'qwerty'
}
request = self.factory.post(reverse('user'), data=data)
response = CustomUserAPIView.as_view()(request)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
API のバージョン管理を追加するように依頼されるまで、すべてがうまく機能していました。
DRF はネイティブでバージョン管理をサポートしていますhttp://www.django-rest-framework.org/api-guide/versioning/ ので、私はそれを使用して、名前空間ベースのバージョン管理を API に追加しました
REST_FRAMEWORK = {
'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.NamespaceVersioning'
}
ここで、バージョニングをサポートするために、ビューの単体テストを書き直す必要があります。
この問題は、 を介してバージョン管理された URL を取得するためにreverse
、使用する必要があることです。
from rest_framework.reverse import reverse
reverse('bookings-list', request=request)
ドキュメントのように。
request
しかし、私は自分でオブジェクトを作成していて、それを作成するために必要なバージョン管理された URL であるため、テストにはオブジェクトがありません。
私は何をすべきか?
PS DRF を使用せずにバージョン管理を実装し、ビュー デコレータといくつかのユーティリティ関数を使用してこの問題を解決できますが、車輪を再発明しているので気分が悪くなります。また、いくつかのエッジケースも忘れる可能性があります。