2012-02-03 4 views
0

В настоящее время я пытаюсь написать функциональные тесты в Symfony 2 для каждого из моих маршрутов. Сейчас я тестирую, чтобы убедиться, что все элементы формы присутствуют и что они имеют правильный тип ввода. Например:Функциональное тестирование Symfony 2

// Make sure there is a description field 
$this->assertTrue($crawler->filter('#form_description')->count() === 1); 
$this->assertTrue($crawler->filter('#form_description')->first()->text() == 'textarea', "Unable to verify #form_description is <textarea>"); 

К сожалению, текст(), кажется, ничего не возвращает, и я не знаю, почему. Запуск PHPUnit с этим тестом дает следующий результат:

Был 1 отказ:

1) fixnit \ ReportBundle \ Tests \ Controller \ ReportControllerTest :: testNew Невозможно проверить #form_description является Failed утверждающая, что false - это правда.

Как исправить мой тест, чтобы получить имя элемента, возвращаемого фильтром искателя?

ответ

0

Docs для искателя сказать:

Экземпляр Crawler представляет собой набор (SplObjectStorage) объектов DOMElement, которые являются в основном узлы, которые вы можете пройти легко

Таким образом, в соответствии с docs, вы должны модифицировать свой код примерно так:

$formCrawler = $crawler->filter('#form_description')->first(); 
foreach($formCrawler as $domElement) { 
    $this->assertTrue(strtolower($domElement->nodeName) == 'textarea', "Unable to verify #form_description is <textarea>"); 
} 
Смежные вопросы