首页 > 解决方案 > Symfony 3.4 和 PHPUnit 在功能测试期间“参数 2 必须是数组类型,给定空值”

问题描述

我正在测试一个大型 Web 应用程序,并且已经使用 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: 传递给 CaseManager\Bundle\OrderBundle\Manager\AnswerManager::buildAndSaveNewAnswers() 的参数 2 必须是数组类型,给定 null,在 /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'));

看起来提供了 NULL 而不是获得“0”。POST 请求进行得很好,当手动测试路线时,一切正常,所以我很难过。

使用 Symfony 3.4 和 PHPUnit 6.5.8

标签: phpsymfonyphpunitfunctional-testingsymfony-3.4

解决方案


推荐阅读