在 Laravel 中的测试期间取消勾选复选框

Untick a checkbox during testing in Laravel

做这样的事情:

$this->visit('/path')
    ->check('field')
    ->push('Save');

无论初始状态如何,都将提交勾选 field 复选框的表单。

如何在表单响应中预先提交时提交未勾选复选框的相同表单? Laravel 的爬虫似乎没有提供执行此操作的方法。

我试过底层 Symfony\Component\DomCrawler\Form:

$visit = $this->visit('/path');
$form = $visit->getForm('Save');
$form['field'] = 0;

但这会触发以下错误:

Input "unique_parcel" cannot take "0" as a value (possible values: 1).

如果您使用的是 laravel/framework 软件包的 v5.1.10+,那么您可以使用 uncheck() 方法。

$this->visit('/path')
     ->uncheck('field')
     ->push('Save');

否则,您可以使用untick()方法。

$form = $visit->getForm('Save');
$form['field']->untick();