Laravel 5.1 - 测试多选框

3
我在使用 Laravel 5.1 测试帮助工具写测试多选框时遇到了麻烦。
我已经尝试过 storeInput 和 select 方法,它们实际上是 storeInput 的别名。当我使用多选框并且想要将输入格式化为数组时,我创建了一个类似这样的标签 <select name="roles[]">,但是这不可测试,我不能写类似这样的代码$this->storeInput( 'roles[]', [ 1, 2 ] ) 。然后我会得到以下错误:

Symfony\Component\CssSelector\Exception\SyntaxErrorException:Expected identifier or "*",but found.

如何解决?我还尝试了使用 ID,但是我得到了错误信息 `Unreachable field "THE_ID"`。
1个回答

9
我采用的方法是创建一个storeInput的覆盖方法,具体如下(我将其放在我的基础TestCase中,这样我就可以从我的所有测试中调用它):
public function storeInput($element, $text, $force = false)
{
    if ($force) {
        $this->inputs[$element] = $text;
        return $this;
    }
    else {
        return parent::storeInput($element, $text);
    }
}

测试多选时,将传递给此方法的标识符末尾的括号去掉:

$this->storeInput('roles', [1, 2], true);

谢谢您,大佬!您也救了我的命:D 很棒的方法。但我在想,为什么L5.2中没有这个可用.. - Peter
这确实帮了我!谢谢。有人能解释一下它是如何工作的吗? - Lizesh Shakya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接