Неисправные тесты PHPUnit 3.7.19 и Symfony2
я разрабатываю какой-то тест для проекта Symfony2.0 и запускаю его с помощью PHPUnit.
На моем ПК работает нормально, но при попытке их в других средах тесты не пройдены. Я думал, что проблема в версии PHP, но после запуска их в разных средах яЯ потерян.
Моя среда - Ubuntu 12.04 и PHP 5.3.10 => Работает отлично.
2 ПК с Ubuntu 12.10 и PHP 5.4.6:
Fatal error: Call to a member function get() on a non-object
Эта ошибка в классе, который распространяетсяSymfony \ Bundle \ FrameworkBundle \ Test \ WebTestCase где перезаписываются методы setUp () и tearDown ().
public function setUp()
{
$this->client = static::createClient();
$this->client->followRedirects(true);
$crawler = $this->client->request('GET', '/admin/login');
$loginForm = $crawler->selectButton('save')->form(array(
'_username' => 'user',
'_password' => 'pass'
));
$this->client->submit($loginForm);
$this->container = $this->client->getContainer();
parent::setUp();
}
public function tearDown()
{
//Here is get() on a non-object, $this->container doesn't exists
$this->container->get('doctrine.odm.mongodb.document_manager')->getConnection()->close();
parent::tearDown();
}
2 ПК, один с Ubuntu 12.10 и PHP 5.4.6, а другой с Windows 7 и PHP 5.3.8:
PHP Fatal error: Call to a member function getSite() on a non-object
Эта ошибка относится к классу, который расширяет вышеприведенный класс с неправильным методом tearDown (), но в этом случае этот класс работает, и ошибка отличается, хотя она связана с $ this->контейнер:
//In this case, the user doesn't exists
$site = $this->container->get('security.context')
->getToken()->getUser()->getSite();
Проблема в том, что я нене знаю почему это. Если это связано с PHP, PHPUnit (у всех нас одинаковая версия), Symfony2.0 или SO.
Редактировать:
Хорошо, проблемы решены.
Первый:
Fatal error: Call to a member function get() on a non-object
В классе была неправильная строка кода с методами setUp () и tearDown (). Вот такая строка:
$link = $crawler->filter('a:contains("Test")')->eq(1)->link();
Я прокомментировал эту строку, извините :). Но я неНе знаю, почему PHPUnit показывает мне эту ошибку, а не ошибку метода ссылки.
Во-вторых:
PHP Fatal error: Call to a member function getSite() on a non-object
В других средах тестовая база данных не была развернута.
Этот вопрос никому не поможет, но поможет мне попробовать что-то новое. Спасибо!