php - 数组作为 Laravel 5.1 中的输入名称测试

标签 php unit-testing phpunit laravel-5.1

我正在为我在 Laravel 5.1 中编写的表单编写一些测试,但我收到一条错误消息:

Symfony\Component\CssSelector\Exception\SyntaxErrorException: Expected identifier or "*", but <number "1" at 11> found.

问题是我为某些字段使用了“数组”名称。

这是一系列问题,我使用问题 ID 来映射答案:

<label>Your answer for question 1?
    <textarea name="question[1]"></textarea>
<label>
<label>Your answer for question 2?
    <textarea name="question[2]"></textarea>
<label>

然后我的测试看起来像这样:

$response = $this->actingAs($user)
        ->visit('/application/project/1/1')
        ->type('This is a new title', 'title')
        ->type('My Question one Answer', 'question[1]')
        ->press('Save & Next Page');

我假设我需要以不同的方式呈现question[1],但我不知道如何做。

最佳答案

解决此问题的一种方法是使用 submitForm 方法。

$input = [
    'title' => 'This is my new title',
    'question[1]' => 'My Question one answer'
];
$response = $this->actingAs($user)
    ->visit('/application/project/1/1')
    ->submitForm('Save & Next Page', $input);

希望这对您有所帮助!

关于php - 数组作为 Laravel 5.1 中的输入名称测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32547908/

相关文章:

php - 如何使用 PHP 反射来设置静态属性?

php - 我如何在测试期间模拟 Symfony 邮件程序?

php7、引用文献和 oci_bind_by_name

php - Composer - 无法在 Windows 上安装 mongodb/mongodb

php - 更改保存到 file.php 的变量值

java - 如何断言对一个模拟的调用顺序?

python - 从单元测试中的结果访问运行时

java - InjectMock 不适用于 Quarkus 中 ApplicationScoped Bean 的 RestClient

Laravel 测试 API 端点 - 缺少 POST 参数

php - 删除特定点后的所有文本