Laravel 5.1 - 测试多个选择框

mur*_*rum 3 php testing phpunit laravel laravel-5

当我使用Laravel 5.1测试助手为多选框编写测试时,我遇到了麻烦.

我已经尝试了storeInput和select,它有点像storeInput的别名.当我使用多重选择并且我希望输入被格式化为数组我已经创建了一个<select name="roles[]">但是这不可测试,我不能写这样的东西$this->storeInput( 'roles[]', [ 1, 2 ] ).我得到的错误是:

Symfony\Component\CssSelector\Exception\SyntaxErrorException:预期的标识符或"*",但找到了.

怎么可能到处走?我还测试了一个ID,但后来我得到了错误`Unreachable field"THE_ID".

小智 9

我这样做的方法是创建一个storeInput的覆盖,如下所示(我把它放在我的基础TestCase中,所以我可以从我的所有测试中得到它):

public function storeInput($element, $text, $force = false)
{
    if ($force) {
        $this->inputs[$element] = $text;
        return $this;
    }
    else {
        return parent::storeInput($element, $text);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在测试多选时,剥去尾随大括号以获取传递给此方法的标识符:

$this->storeInput('roles', [1, 2], true);
Run Code Online (Sandbox Code Playgroud)