Похожие темы
тестирование в модулях: viewtopic.php?f=3&t=1423&p=8753&hilit=% ... 0%B5#p8753
тестирование в контроллерах - viewtopic.php?f=3&t=991&p=6183&hilit=%D ... 1%8B#p6183
документация по тестированию - http://yiiframework.ru/doc/guide/ru/test.unit
Так же оф.документация от PHPUnit (на английском) http://www.phpunit.de/manual/3.6/en/org ... tests.html
Я пишу тесты в первые, и начальная настройка у меня заняла дня 3. (по настройке - http://www.zagirov.name/configure-netbe ... nit-tests/ и google в помощь) В этом посте, я хочу обобщить все свои наработки, может кому то (кто тоже впревые тестирует) это понадобится.
У меня стоит linux, netbeans и yii 1.1.5, поэтому все что будет написанно относится к моей конфигурации, но я думаю что и для любых других тоже пойдет.
Тестирую я модель protected/model/Matrix.php
Название моего домена mlm.
Заполняется входной скрипт, надо внимательно и правильно заполнить пути до нужный файлов.
/protected/tests/boostrap.php:
Код: Выделить всё
$yiit=dirname(__FILE__).'/../../framework/yiit.php';
$config=dirname(__FILE__).'/../config/test.php';
require_once($yiit);
require_once(dirname(__FILE__).'/WebTestCase.php');
Yii::createWebApplication($config);
/protected/tests/WebCaseTest.php:
Код: Выделить всё
define('TEST_BASE_URL','http://mlm/index-test.php/'); //[b]где mlm - имя вашего домена[/b]
class WebTestCase extends CWebTestCase
{
protected function setUp()
{
parent::setUp();
$this->setBrowserUrl(TEST_BASE_URL);
}
}
/protected/config/test.php:
Код: Выделить всё
return CMap::mergeArray(
require(dirname(__FILE__).'/main.php'),
array(
'components'=>array(
'fixture'=>array(
'class'=>'system.test.CDbFixtureManager',
),
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=mlmtest', //mlmtest база созданная специально для тестирования
'emulatePrepare' => true,
'username' => 'user',
'password' => 'pass',
'charset' => 'utf8',
'tablePrefix' => 'mlm_',
),
),
)
);
/protected/tests/fixtures/mlm_matrix.php:
Код: Выделить всё
return array(
'sample1'=>array(
'parent'=>'0',
'lft'=>"1",
'rght'=>'4',
'level'=>'0',
'id_user'=>'1',
'referral'=>'0',
),
'sample2'=>array(
'parent'=>'1',
'lft'=>"2",
'rght'=>'3',
'level'=>'1',
'id_user'=>'2',
'referral'=>'1',
),
);
/protected/tests/unit/MatrixTest.php:
Код: Выделить всё
class MatrixTest extends CDbTestCase
{
public $fixtures=array(
'matrix'=>'Matrix',
);
public function testShow()
{
$matrix = new Matrix;
$res = $matrix->findByPK(1);
$this->assertEquals($res->rght,4);
}
}
Код: Выделить всё
phpunit unit/MatrixTest.php
то будет получен ответ OK
Код: Выделить всё
PHPUnit 3.4.5 by Sebastian Bergmann.
.
Time: 1 second, Memory: 8.75Mb
OK (1 test, 1 assertion)
А для тех кто уже разобрался в этой теме есть парочка вопросов:
Как запустить все тесты в netbeans, alt+F6 не работает, говорит что не выбранно не одного теста.
Как работает unitphp.xml, лучше с реальным примером для теста выше.
Какие у меня есть ошибки?
Ну конечно побольше примеров правильного тестирования.