php - 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
解决方案
推荐阅读
- html - 我可以从 Angular 调用 Dialogflow 意图吗?
- rust - 在 Struct Vec 中查找结构的惯用方法,然后在 Rust 中对该结构执行特征函数
- git - 使用 BFG 清理 repo 后出现“未能推送一些 refs”错误
- javascript - 如何使用 opencv.js 对齐图像
- git - 使用常规提交更新包版本的好提交消息是什么?
- javascript - 将 Ajax 生成的 URL 传递到网页中的 JQuery 选项卡
- graph - Gnuplot:我可以在某些数据点上拉伸 x 轴吗?
- android - 在开发时检测Android App Crash和空指针异常
- google-cloud-platform - 谷歌云中计算机引擎响应缓慢
- apache-flink - pyflink(flink) 1.12.0 通过 to_append_stream (java api is: toAppendStream) 将表转换为数据流时出现错误