Unit тестирование
Модульные тестирование методов приложения выполняется с помощью класса Test, например нам нужно проверить работу метода ядра getlist,
мы знаем, что результатом должен быть массив, при этом также мы знаем, что таблица заполнена хотя бы одной строчкой и соответственно должен быть элемент id>0, тогда проверяем тип результата:
<?
$type = [
'output'=>['data'=>'array'],
'input'=>['0'=>'array']
];
$value = [
'output' =>['0:id'=>'=1'],
'input'=>['0'=>'%test'],
'value'=>[0=>'M:5:8'],
'range'=>[0=>[0,9]]
];
** - флаги метода:
M – email
L – латинские символы
A – русские символы
0 — числа
Z – дополнительные символы
S – символы часто используемые в SQL-инъекциях
M:5 – означает выдать E-mail с длиной логина 5 символов
M:5:10 – означает выдать E-mail с длиной логина от 5 до 10 символов
M – выдает логин с длиной 10 символов
Создаем объект теста:
$test = new \Foton\Lib\Test($type,$value);
Теперь все методы можно начинать с него и далее ->класс_метода->метод():
$test->core->getlist(['catalogshop']);
А здесь выводим результат теста, тестов может быть несколько:
$test->log();
$test->return(); - вернет и очистит self::$log
$test->return(true); - только вернет self::$log
$test->clear() - очистить все свойства класса Test
Пример полностью:
$type = [
'output'=>['data'=>'array'],
'input'=>['0'=>'array']
];
$value = [
'output' =>['0:id'=>'=1'],
'input'=>['0'=>'%test'],
'value'=>[0=>'M:5:8'],
'range'=>[0=>[0,9]]
];
$test = new \Foton\Lib\Test($type,$value);
$test->core->getlist(['catalogshop']);
$test->log();
$test->clear();
Модульное тестирование
Для работы с модульным тестированием используйте директорию /dev/tests/
Например для тестирования MVC catalog, когда вам нужно проверить работу методов контроллера /app/controller/site/catalog.php создайте файл catalog.php
<?
namespace Dev\Tests;
use Controller\Site;
class catalog{
private $core,$catalog;
public function __construct()
{
$this->core = new \Foton\Core;
$this->catalog = new Site\catalog();
}
public function desc(){
global $FG;
$FG->get()->href = 'gibridnye-solnechnye-elektrostancii';
$desc = $this→catalog→desc();
if($desc){
return true;
}
return 'desc no array';
}
}
Запустим тест через консоль с помощью команды:
php foton test mvc catalog
Либо можем запустить тестирование всего приложения:
php foton test mvc
Интеграционное тестирование
Для интеграционного тестирования используйте файл /dev/test.json
По умолчанию файл содержит структуру:
{
"mvc":{
"html":{"test":"test"},
"product":{"href":"avtonomnaya-solnechnaya-elektrostanciya-20-kvtchsutkii-dlya-doma-150-m2"},
"itemwork":{"href":"avtonomnaya-solnechnaya-elektrostanciya-20-kvtchsutki-dlya-doma-150-m2"}
},
"widget":{
"htmlredactor":{
"value":"test value",
"name":"testname"
}
},
"ajaxsite":{
"test":{
"GET":{"test":"mytest"}
}
}
}
Ключами json массива служат форматы данных Framework Foton.
Внутри массива формата ключами служат название сущностей(файлов/классов)
Далее массив содержит либо данные get параметров, либо массив аргументов для вызова формата данных, для ajax запросов обязательно указываем GET или POST параметры, если они нам нужны для теста.
Тест проводится через консоль с помощью команды:
php foton test cicd
Если же вам нужен вывод результата работы приложения, пишем например:
php foton test widget htmlredactor yes
или же указываем в команде
php foton test
что нам нужно вывести содержимое.