この本の章に多少基づいて、django-crispy-form で作成されたフォームを単体テストしたいのですが、次のエラーが発生します。
TypeError: {% クリスピー %} タグに提供されるヘルパー オブジェクトは、chrispy.helper.FormHelper オブジェクトでなければなりません。
フォーム ( myapp/forms.py
):
class MyBaseForm(forms.models.ModelForm):
def __init__(self, *args, **kwargs):
super(MyBaseForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_id = 'id-myForm'
self.helper.form_method = 'POST'
self.helper.form_action = ''
self.helper.add_input(Submit('submit', 'Create'))
class Meta:
model = MyModel
# [...]
class MyNewForm(MyBaseForm):
def save(self):
return MyModel.create_new(data=self.cleaned_data['data'])
ビュー ( myapp/views.py
):
@login_required
def event_new(request):
if request.method == 'POST':
form = MyNewForm(data=request.POST)
if form.is_valid():
event = form.save()
return redirect(event)
else:
form = MyNewForm()
return render(request, 'event_new.html', {'form': form})
テスト:
@patch('myapp.views.MyNewForm')
class MyNewViewUnitTest(TestCase):
def setUp(self):
self.t = unittest.TestCase()
self.t.request = HttpRequest()
self.t.request.POST['data'] = 'data'
self.t.request.user = Mock()
def test_passes_POST_data_to_Form(self, mockMyNewForm):
event_new(self.t.request)
mockMyNewForm.assert_called_once_with(data=self.t.request.POST)
どうにかしてヘルパー オブジェクトもモックする必要がありますか? そして、それはどのように行われますか?どうもありがとうございました!