Я нахожусь на крутой части кривой обучения для функциональных тестов. В простой форме, которая изменяет статус агентства (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. Я построил тест, который должным образом добавляет агентство, так что я знаю, что я не полностью покинуть трек. (Я также думаю, что есть более простые способы подсчета количества раз, когда Да отображается в таблице.)
Спасибо.
Что делает '$ client-> getResponse() -> getContent()' выглядеть после '$ crawler = $ client-> submit ($ form);' Вы должны проверить, что ответ успешный после каждого POST/GET с помощью '$ this-> assertTrue ($ client-> getResponse() -> isSuccessful());' чтобы убедиться, что ваша тестовая конфигурация не содержит никаких проблем, или другое исключение не возникает во время запроса. –
@james_t: '$ client-> getResponse() -> getContent()' кажется пустым в оболочке Windows (только.). '$ this-> assertTrue ($ client-> getResponse() -> isSuccessful())' assertion не прерывается. – geoB
Коррекция: '... getContent()' возвращает html ожидаемой страницы, когда используется 'var_dump()'. – geoB