#php #phpunit #joomla3.5
#php #phpunit #joomla3.5
Вопрос:
Я пытаюсь создавать тесты, используя PHPUnit в Joomla. После нескольких ошибок это то, что у меня есть:
pathToProject/tests/pruebastests.php:
<?php
class PruebasTest extends PHPUnit_Framework_TestCase
{
public function testSimple0()
{
$a = 3-1;
$this->assertEquals(2, $a);
}
public function testSimple1()
{
$this->assertEquals(2, 1 2);
}
public function testSimple2()
{
$this->assertEquals(2, 1 1);
}
}
когда я запускаю по этому пути:
phpunit pruebatests.php
это выдает мне ошибку:
EF.
Время: 3,18 секунды, объем памяти: 5,75 МБ
Произошла 1 ошибка:
1) PruebasTest::testSimple0 unserialize(): ошибка при смещении 3919 из 8500 байт
Это всегда происходит при первом тестировании, которое он запускает. Я имею в виду, что если я удаляю функцию testSimple0, я получаю ту же ошибку с помощью testSimple1
Я прочитал другие вопросы StackOverflow, связанные с этой ошибкой несериализации, но они мне не помогли.
РЕДАКТИРОВАТЬ: если я попробую это на другом компьютере с другим файлом в том же проекте, ошибка будет:
unserialize(): ошибка при смещении 4189 из 8484 байт
Я понял, что ошибка связана с bootstrap.php:
<?php
error_reporting(E_ALL);
define('_JEXEC', 1);
define('BASEPATH', realpath(dirname(__FILE__) . '/../'));
define('JOOMLA_PATH', realpath(dirname(__FILE__) . '/../'));
define('JOOMLA_ADMIN_PATH', realpath(dirname(__FILE__) . '/../'));
$_SERVER['HTTP_HOST'] = 'localhost';
$_SERVER['REQUEST_METHOD'] = 'GET';
define('DS', DIRECTORY_SEPARATOR);
if (file_exists(JOOMLA_ADMIN_PATH . '/defines.php'))
{
include_once JOOMLA_ADMIN_PATH . '/defines.php';
}
if (!defined('_JDEFINES'))
{
define('JPATH_BASE', JOOMLA_ADMIN_PATH);
require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
define('JPATH_COMPONENT', JOOMLA_ADMIN_PATH . '/components/com_content');
$app = JFactory::getApplication('administrator');
Если я прокомментирую последнюю строку, ошибка исчезнет. Но если я это сделаю, я не смогу создать экземпляр какого-либо контроллера…
Есть идеи? Я использую Joomla 3.5 и PHPUnit 4.8
Комментарии:
1. Я не могу воспроизвести это. Происходит что-то еще, что здесь не показано. Когда я запускаю этот тест, я получаю
.F. 1) PruebasTest::testSimple1 Failed asserting that 3 matches expected 2.
2. Попробуйте выполнить обновление до phpunit > 5 github.com/sebastianbergmann/phpunit/issues/1571
3. Результат тот же с 5.6.1
Ответ №1:
Попробуйте очистить кэш. Я столкнулся с такой проблемой. В symfony причиной были старые файлы *.meta в /var/cache
Комментарии:
1. Спасибо за ваш ответ. Я не помню, что я сделал. Это было 6 лет назад. Но, перечитывая вопрос, который я пробовал на 2 разных компьютерах, я не думаю, что проблема была в кэше.