Я создаю некоторые функциональные тесты для тестирования моего контроллера. На данный момент у меня есть 2 функции. 1 для loggin in и 1 для жизненного цикла организации.
оба должны работать нормально (я думаю). Но я получаю следующую ошибку:
Текущий список узлов пуст
Я попытался удалить весь свой код из тестового класса без результата. Я также попытался добавить пустой метод, чтобы увидеть, также ли это происходит там. И да, да. Этот тест также падает.
Так что я искал Google для решения. Я пробовал несколько вещей, например:
( $ client = static :: createClient (массив (), массив ('HTTP_HOST' => 'symfony.dev')); )
var_dump ($ client-> GetResponse () -> getContent ()); (который получает страницу, где должен быть тест)
Изменить заголовок :
$response = $this->render('CMSBundle:Front:test.html.twig',); $response->headers->set('Content-Type', 'text/html'); return $response;
И еще кое-что. Ни один из них не работал. Я не могу понять, в чем проблема.
У кого-нибудь есть предложения по этой проблеме?
Мой тестовый код:
public function testLogin() { $client = $this->client; $crawler = $client->request('GET', '/admin/login'); $this->assertEquals(200, $client->getResponse()->getStatusCode(), "Unexpected HTTP status code for GET /admin/login"); // Fill in the form and submit it $form = $crawler->selectButton('Inloggen')->form(array( '_username' => 'erik', '_password' => 'erik' )); $client->submit($form); }
Заранее спасибо!
После некоторого поиска я нашел ответ здесь, в stackoverflow .
По умолчанию искатель symfony2 догадывается, что расположение сервера находится на «localhost». Но моего нет. Поэтому я должен был сказать сканеру, где искать.
Это код, который я должен был добавить 'HTTP_HOST' => 'my.server.location'
Добавление этого кода делает код таким:
$this->client = static::createClient( array(), array( 'HTTP_HOST' => 'my.server.location', //dependent on server )); $this->client->followRedirects(true);
Итак, теперь, когда я получаю url $crawler = $client->request('GET', '/admin/login');
, http://my.server.location/admin/login
получит следующий URL: http://my.server.location/admin/login
.
Надеюсь, это поможет кому угодно!
И кредиты Мэтту за ответ