Я тестирую большое веб-приложение и некоторое время использую PHPUnit для выполнения функциональных тестов.Тестирование форм обычно простое, но в последнее время возникла проблема, которую я не могу решить.
Вот HTML-код протестированного маршрута:
<html><head></head><body><section class="panel">
Textarea
<div class="panel-body">
<div class="widget-content">
<form action="/order/order-line/save/2144/0/0" method="POST" novalidate="">
<div class="form-horizontal group-form-display-fix">
<input type="hidden" id="_productId" name="0[productId]" value="68234"> <div class="form-group"><div class="col-sm-4"><label class="required"><span class="required-asterisk" title="This field is required">*</span>
Textarea
</label></div><div class="col-sm-8 form-input"><div id="_1099" data-groupid="1099"><div class="form-group"><div class="col-sm-4"><label for="_1099_textarea" class="">
Textarea/
</label></div><div class="col-sm-8 form-input"><textarea id="_1099_textarea" name="0[1099][textarea]" class="textarea">qreqwrwqrqe</textarea></div></div></div></div></div>
</div>
Вот тест, о котором идет речь:
public function testTextQuestion()
{
$this->client->followRedirects();
$crawler = $this->client->request('GET', '/order/order-line/get-view/2144/0/406?_=1526296674384');
$form = $crawler->selectButton('Save')->form();
$form['0[1099][textarea]']->setValue('test nonsense');
$crawler = $this->client->submit($form);
$this->assertContains('Instruction details updated', $this->client->getResponse()->getContent());
}
Тест выдает ошибку:
TypeError: Аргумент 2 передается в CaseManager \ Bundle \ OrderBundle \ Manager \ AnswerManager :: buildAndSaveNewAnswers () должен иметь тип массива, с нулевым значением, называемымв /software/src/Software/Bundle/OrderBundle/Controller/OrderLineController.php в строке 2580
Код в контроллере находится здесь:
$this->get('software_order.answer_manager')->buildAndSaveNewAnswers(
$this->get('software_order_line.repository')->findOr404($orderLineId), $request->get('0'));
Это выглядитнапример, вместо того, чтобы получить '0', предоставляется NULL.POST-запрос проходит нормально, и когда маршрут проверяется вручную, все работает, поэтому я в замешательстве.
Использование Symfony 3.4 и PHPUnit 6.5.8