Как выполнить модульное тестирование компонента Joomla 2.5

Может кто-нибудь привести пример того, как провести модульное тестирование компонента Joomla 2.5? Я работаю через этот пример компонента Joomla MVC, который не включает модульные тесты, и я не могу найти полный пример нигде. Мои основные вопросы:

  • Где поставить тестовый код компонента
  • Как запустить модульные тесты компонентов
  • Мой тестовый код правильный

Документация Joomla кажется неполной и фрагментированной — я прочитал то, что я могу найти в модульном тестировании (не могу публиковать ссылки из-за низкого числа повторений), которое, похоже, касается тестирования самого Joomla, а не расширений. Ближайшее, что я нашел, это этот, на котором я основал свой фиктивный тест.

Что я сделал до сих пор

Структура каталогов компонентов:

  • Привет, мир/
    • админ /
      • Тесты /
        • bootstrap.php
        • phpunit.xml
        • modelHelloWorldsTest.php
    • сайт /
    • helloworld.xml

Чтобы запустить тесты, я устанавливаю / копирую компонент в мою установку Joomla. Затем я запускаю следующую команду из ~ joomla / Administration / components / com_helloworld / tests:

php phpunit-4.2.phar --bootstrap bootstrap.php .

от которого я получаю

Fatal error: Class 'ContentController' not found in C:\inetpub\wwwroot\ws_cairnstest\administrator\components\com_helloworld\tests\modelsHelloWorldsTest.php on line 5

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';

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';
require_once JPATH_BASE . '/includes/helper.php';
require_once JPATH_BASE . '/includes/toolbar.php';
define('JPATH_COMPONENT',JOOMLA_ADMIN_PATH.'/components/com_content');
$app = JFactory::getApplication('administrator');
include BASEPATH.'/controller.php';

modelsHelloWorldsTest.php:

<?php
class HelloWorldsTest extends \PHPUnit_Framework_TestCase {

public function testList(){
$c = new ContentController();
$model = $c->getModel('helloworlds');
$worlds = $model->getItems();
var_dump($worlds);
$this->assertNotEmpty($worlds);
}
}

phpunit.xml:

<phpunit bootstrap="bootstrap.php"colors="true"convertErrorsToExceptions="true"convertNoticesToExceptions="true"convertWarningsToExceptions="true"processIsolation="false"stopOnFailure="false"syntaxCheck="false"verbose="true">
</phpunit>

11

Решение

Модульные тесты для Joomla обычно написаны для использования PHP Unit Framework

Ответить на ваши вопросы
Где разместить тестовый код компонента: на верхнем уровне вашего репо следующим образом

Структура каталога репозитория компонентов:

  • ЦСИ
    • админ /
    • сайт /
  • тесты

Как запустить модульные тесты компонентов: выполнение теста следует этой схеме

vendor/bin/phpunit --configuration phpunit.xml

дополнительные подробности можно найти в документации модуля php https://phpunit.de/documentation.html

Ваш тестовый код правильный: нет

Вы не смогли высмеять свой класс и методы с getMockBuilder() для тестирования.

Вот несколько примеров, чтобы посмотреть на

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]