Symfony 3.4 и PHPUnit «Аргумент 2 должен иметь тип массив, значение NULL» во время функционального теста - PullRequest
0 голосов
/ 01 июня 2018

Я тестирую большое веб-приложение и некоторое время использую 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

...