phpUnit - ошибка assertQuery с

У меня проблемы с assertQuery(). В html у меня есть (проверено выводом тела)

<input type="text" name="LASTNAME" id="LASTNAME" value="" maxlength="25" size="20" />

Поэтому я написал запрос для его проверки, чтобы убедиться, что этот элемент существует и что значение пусто.

    $this->assertQuery('input#LASTNAME[value=""]', 1);

PhpUnit говорит, что утверждение не выполняется

Узел с ошибкой подтверждения, ОБОЗНАЧАЕМЫЙ input#LASTNAME[value=""] СУЩЕСТВУЕТ

Можете ли вы дать мне некоторое представление о том, почему это утверждение не работает и как правильно его написать?

Заранее спасибо!


person Rosina Bignall    schedule 01.03.2011    source источник


Ответы (2)


Код Zend Framework, преобразующий селектор CSS в запрос XPath, не работает. Он не добавляет обязательное @ перед именем атрибута. Используйте это, хотя и неверное CSS, утверждение:

$this->assertQuery('input#LASTNAME[@value=""]', 1);

См. в этой ветке форума подробности.

Обновление: сообщалось о ошибке и исправлено в версии 1.10, так что вы можете обновить Zend Framework в качестве альтернативы использованию недопустимого селектора CSS.

person David Harkness    schedule 01.03.2011
comment
Очень хороший и полный ответ :) - person edorian; 01.03.2011

В качестве альтернативы вы можете использовать селекторы XPath вместо селекторов CSS и, таким образом, пропустить преобразование CSS в XPath, выполняемое Zend_Dom_Query:

$this->assertXpath( '//input[@id="LASTNAME"][@value=""]' );
person Vika    schedule 01.03.2011