Я уже прочитал: Django REST Framework - Установить запрос в тесте сериализатора? . И это не работает для меня! Потому что я использую APIClient, а не RequestFactory, как он.
Я создал веб-приложение, в котором серверная часть реализована с использованием Django REST Framework. Сейчас я пишу юнит-тесты и столкнулся с проблемой при тестировании методов сериализатора. Вот один пример метода сериализатора, с которым я борюсь:
def get_can_edit(self, obj):
request = self.context['request']
user = User.objects.get(username=request.user)
return user == obj.admin
При попытке вызвать это из теста сначала я объявляю экземпляр сериализатора:
Но теперь я нужен self.serializer для правильного запроса, когда get_can_edit делает self.context.get ('request'). Я создал поддельный запрос с правильной информацией, используя APIClient:
self.client = APIClient()
self.client.force_authenticate(user)
conference = a_fake_conference
res = self.client.get('conference:conference-detail'. args=[conference.id])
serializer = ConferenceSerializer(conference, context={WHAT_IS_REQUEST?})
# I'm using a dict as context but the request gave me an error: context={'request': { 'user': user }}
sert.assertEqual(res.data, serializer.data)
Теперь я застрял, потому что я не уверен, как добавить request1 в сериализатор так, чтобы request = self.context['request']
вернул
Спасибо.