【发布时间】:2014-11-16 00:56:12
【问题描述】:
谁能提供一个如何对 Joomla 2.5 组件进行单元测试的示例?我正在处理this joomla mvc component example,它不包括单元测试,而且我在任何地方都找不到完整的示例。我的主要问题是:
- 组件测试代码的放置位置
- 如何运行组件单元测试
- 我的测试代码是否正确
Joomla 文档似乎不完整且支离破碎 - 我已经阅读了我在单元测试中可以找到的内容(由于低代表无法发布链接),这似乎是关于测试 Joomla 本身而不是扩展。我找到的最接近的是this,这是我的虚拟测试的基础。
到目前为止我做了什么
组件目录结构:
- 你好世界/
- 管理员/
- ...
- 测试/
- 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>
【问题讨论】:
-
这个问题是关于Joomla的具体实现细节,如果你有可能会得到更好的结果,试试the Joomla Q&A StackExhange site
-
完成 (link)。
标签: php unit-testing joomla joomla2.5