通过集成测试勾选复选框

Ticking a checkbox with integration testing

我有一个 laravel 5.2 应用程序,在视图中我有 3 个复选框

<input type="checkbox" name="roles[]" value="5">
<input type="checkbox" name="roles[]" value="11">
<input type="checkbox" name="roles[]" value="7">

我对该页面进行了测试

$this->visit(route('staff.create'))
     ->type($name = str_random(), 'name')
     ->type($phone = str_random(), 'phone')
     ->set('roles', 5) // <--- what to do here
     ->press('Save')
     ->seePageIs(route('staff.index'))
     ->see($name);

一切正常,期待设置角色。检查测试助手不允许您传递值 ( $this->check($elementName) )。我以为它会是 'set' 但那也失败了。

如何检查我在测试中的第一个复选框?

我检查了 InteractsWithPages 特性,我认为它不支持开箱即用的输入数组。您可以尝试将 set() 替换为:

->storeInput('roles', 5);

->storeInput('roles', [ 5 ]);

如果这还不够——您可以在您的测试用例中覆盖此方法。