2013-03-11 2 views
0

Я нахожусь на крутой части кривой обучения для функциональных тестов. В простой форме, которая изменяет статус агентства (Yes-> No, No-> Yes), редактирование записи завершается с ошибкой. Тест-код:Symfony2: функциональный тест записи не удался

$crawler = $client->request('GET', '/agency/manage'); 
//read agency table 
$nodeValues = $crawler->filter('td')->each(function ($node, $i) { 
    return $node->nodeValue; 
}); 

//$initial = number of Active=Yes agencies 
$initial = 0; 
foreach ($nodeValues as $node) { 
    if ($node == 'Yes') { 
     $initial ++; 
    } 
} 
//edit agency to Active=No 
$crawler = $client->request('GET', '/agency/1/edit'); 
$form = $crawler->selectButton('Edit')->form(); 
$form['agency[active]'] = 'No'; 
$crawler = $client->submit($form); 

$crawler = $client->request('GET', '/agency/manage'); 

$nodeValues = $crawler->filter('td')->each(function ($node, $i) { 
    return $node->nodeValue; 
}); 

//$final = number of Active=Yes agencies 
$final = 0; 
foreach ($nodeValues as $node) { 
    if ($node == 'Yes') { 
     $final ++; 
    } 
} 

$this->assertTrue($initial > $final); 

Для моего теста, как начальные и конечные значения 2. Я построил тест, который должным образом добавляет агентство, так что я знаю, что я не полностью покинуть трек. (Я также думаю, что есть более простые способы подсчета количества раз, когда Да отображается в таблице.)

Спасибо.

+0

Что делает '$ client-> getResponse() -> getContent()' выглядеть после '$ crawler = $ client-> submit ($ form);' Вы должны проверить, что ответ успешный после каждого POST/GET с помощью '$ this-> assertTrue ($ client-> getResponse() -> isSuccessful());' чтобы убедиться, что ваша тестовая конфигурация не содержит никаких проблем, или другое исключение не возникает во время запроса. –

+0

@james_t: '$ client-> getResponse() -> getContent()' кажется пустым в оболочке Windows (только.). '$ this-> assertTrue ($ client-> getResponse() -> isSuccessful())' assertion не прерывается. – geoB

+0

Коррекция: '... getContent()' возвращает html ожидаемой страницы, когда используется 'var_dump()'. – geoB

ответ

0

Ответ: исправить маршрутизацию действия редактирования! Тест теперь передается.

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