Je ne semble pas pouvoir simuler le comportement d'un formulaire lors de tests unitaires de vues.
Mon formulaire est un simple ModelForm et se trouve dans profiles.forms
. La vue est (encore une fois) une vue simple qui vérifie si le formulaire est valide, puis redirige.
views.py
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse
from profiles.forms import ProfileForm
def home(request):
form = ProfileForm()
if request.method == 'POST':
form = ProfileForm(request.POST)
if form.is_valid():
profile = form.save()
return HttpResponseRedirect(reverse("thanks"))
Mon test ressemble à ceci :
class TestViewHomePost(TestCase):
def setUp(self):
self.factory = RequestFactory()
def test_form(self):
with mock.patch('profiles.views.ProfileForm') as mock_profile_form:
mock_profile_form.is_valid.return_value = True
request = self.factory.post(reverse("home"), data={})
response = home(request)
logger.debug(mock_profile_form.is_valid.call_count) # "0"
is_valid
n'est pas appelé sur le mock, ce qui signifie que ProfileForm n'est pas patché.
Où ai-je commis une erreur ?