Объект '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(), если это диктант, список или кортеж.

Вернуться на верх