【发布时间】:2018-03-27 23:31:47
【问题描述】:
我的应用程序中的用户创建端点创建了一个与我的 django 用户具有相同 ID 的 firebase 用户(我在应用程序内有一个聊天室,由 firebase 提供支持)。
from django.contrib.auth.models import User
from rest_framework import generics
from rest_framework import permissions
from apps.core.services import firebase_chat
class UserCreate(generics.GenericAPIView):
permission_classes = [permissions.AllowAny]
@transaction.atomic
def put(self, request):
user = User.objects.create(**request.data)
firebase_chat.create_user(user)
firebase_chat 是我围绕标准 firebase 库创建的包装器。
我正在按照 DRF 指南中的建议编写测试:
from django.urls import reverse
from django.test import TestCase
from rest_framework.test import APIClient
class UserCreateTest(TestCase):
def test_user_create__all_valid__user_created(self):
client = APIClient()
client.force_authenticate(user=User.objects.create(username='test'))
response = client.put(reverse('user-create'))
self.assertTrue(response.data['something'])
但是,这会导致在 Firebase 中创建一个实际用户。这不仅使测试失败(firebase 库引发异常),而且还会命中实际的 firebase 服务器,并用测试数据填充它。
如何在测试期间模拟或禁用 firebase 库?
【问题讨论】:
标签: django testing django-rest-framework