Framework foton
Инструмент для профессиональной разработки web приложений
Unit тестирование

Модульные тестирование методов приложения выполняется с помощью класса Test, например нам нужно проверить работу метода ядра getlist,
мы знаем, что результатом должен быть массив, при этом также мы знаем, что таблица заполнена хотя бы одной строчкой и соответственно должен быть элемент id>0, тогда проверяем тип результата:

<?
// Здесь ключ любое название, значение — тип данных в php
$type = [
    'output'=>['data'=>'array'], //тип результата
    'input'=>['0'=>'array']//тип первого входного параметра 
]; 
/*
Элемент с id:
Например, если результат метода массив и нам нужно проверить элемент $arr['test1']['test2'], то мы напишем ['test1:test2'=>'element']
Значение может принимать следующие флаги в начале:
= - проверка равно или нет
> - проверка меньше
< - проверка больше
! - не равно
% - содержит значение
*/
$value = [
    'output' =>['0:id'=>'=1'],//значение исходящего параметра 
    'input'=>['0'=>'%test'], //значение входящих параметров, только для строк
    'value'=>[0=>'M:5:8'],//использует метод Core->rand() для создания рандомной строки**
    'range'=>[0=>[0,9]] //использует метод range для создания массива
];

** - флаги метода:
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'],//использует метод Core->rand() для создания рандомной строки**
    'range'=>[0=>[0,9]] //использует метод range для создания массива
  ];
  $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'; //создаем get 	параметр 	нужный для тестирования метода
	    $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
что нам нужно вывести содержимое.


© Copyright 2026 Разработано на Framework Foton
Продукт зарегистрирован в Роспатенте