2016-04-11 3 views
3

Я пытаюсь покрыть мой проект испытанием и столкнулся с проблемой.Метод испытания формы формы Laravel не работает

«Пресс» метод TestCase терпит неудачу с «InvalidArgumentException: недостижимым поле„“»

Однако «видеть» метод видит нужную кнопку

Кроме того, другой форме на другой странице испытаний тонких

часов отладки показать мне, что проблема может быть в том, что форма проблема имеет несколько (с этим скобки []) входы

Тестовый код, который не удается

$this->type($params['from'], 'from[]'); 
$this->type($params['event'], 'event[]'); 
$this->type($params['class'], 'class[]'); 
$this->type($params['method'], 'method[]'); 
$this->press('save_handlers'); 

С формой и кнопкой Everythings является ОКЕЕМ Кнопки:

<button type="submit" class="btn btn-primary btn-block" name="save_handlers">Save</button> 

И, конечно же кнопка в виде теге

ответ

1

Это кажется довольно запутанными видящим как документы заявить об этом:

«Нажмите» кнопку с заданным текстом или именем.

Хотя DocBlock выше фактических press метода состояний следующее:

Отправить форму, используя кнопку с данным текстовым значением.

Таким образом, вместо использования значения атрибута name (save_handler) используйте фактический текст (Сохранить).

$this->press('Save'); 
+1

Нет, не работает. Такая же ошибка 'InvalidArgumentException: Недоступное поле ""' –

2

Действительно, проблема связана с тем, что есть атрибуты с скобками [].

У меня была такая же проблема. Я использую форму с несколькими флажками, и все они имеют одинаковое имя (но другой идентификатор): codes[]. Я делаю это, чтобы получить их позже (в контроллере) просто как массив значений.

<input id="perm-0" type="checkbox" name="codes[]" value="perm-0" /> 
 
<input id="perm-1" type="checkbox" name="codes[]" value="perm-1" /> 
 
<input id="perm-2" type="checkbox" name="codes[]" value="perm-2" />

Мой друг var_dump() сказал мне, что компонент Symfony, который анализирует форму входа не нравится, когда я использую codes[] ни с чем внутри скобок. Это рассматривается как два поля: "codes" и "" вместо codes[]. Это вызывает ошибку Unreachable field "".

Простое решение, которое я нашел, чтобы просто добавить явный индекс для codes[] массива:

<input id="perm-0" type="checkbox" name="codes[0]" value="perm-0" /> 
 
<input id="perm-1" type="checkbox" name="codes[1]" value="perm-1" /> 
 
<input id="perm-2" type="checkbox" name="codes[2]" value="perm-2" />

Таким образом, каждый флажок, отличной от других, и метод печати() делает не вызывать ошибки. Кажется, что это не влияет на обработку результирующего массива в моем контроллере.

+0

Помогло ли вам это? – DaveBowman

+0

Сделал трюк для меня – Wistar

Смежные вопросы