Объект 'str' не имеет атрибута '_encode_json'
Я написал тест с RequestFactory для проверки одного из моих представлений, со следующим кодом:
class ViewTestCase(TestCase):
@classmethod
def setUp(self):
self.factory = RequestFactory
self.user = User.objects.create_user(
first_name='tester',
username='test1',
password='123',
email='testuser@something.com'
)
def test_room_creation(self):
payload = {"titlePlanning": "Test1","styleCards": "Fibonnaci","deck": ["1","2","3"]}
request = self.factory.post('/room', payload)
request.user = self.user
response = BeginRoom.as_view()(request)
self.assertEqual(response.status_code, 200)
Вот данные, которые мне нужно отправить, чтобы использовать POST:
class BeginRoom(APIView):
permissions_classes = (IsAuthenticated,)
def post(self, request, format=None):
data= self.request.data
user = request.user
name = data['titlePlanning'].strip()
styleCards = data['styleCards']
cards = data['deck']
Моя проблема заключается в том, что всякий раз, когда я запускаю свои тесты, я получаю следующую ошибку:
data = self._encode_json({} if data is None else data, content_type)
AttributeError: 'str' object has no attribute '_encode_json'
Что мне делать? Я заблудился и не могу найти ничего связанного с этим. Любая помощь будет оценена!
Вместо этого внутри test_room_creation:
request = self.factory.post('/room', payload)
используйте это:
request = self.factory.post('/room', payload, content_type='application/json')
От docs:
Если вы предоставляете
content_typeкакapplication/json, данные сериализуются с помощьюjson.dumps(), если это диктант, список или кортеж.