Tests
Instrucciones para correr las pruebas de phpUnit
  1. Abrir command prompt
  2. Correr:
    1. cd \wamp\www\vitex
      • tests\tester.bat --testsuite testSuiteName
      • tests\tester.bat tests\testFileName.php
      • tests\tester.bat --no-coverage [--testsuite testSuiteName|tests\testFileName.php]
        Rápido, al no generar coverage
      • tests\tester.bat --no-coverage --stop-on-failure --stop-on-error [--testsuite testSuiteName|tests\testFileName.php]
        Termina al primer error y es rápido, al no generar coverage
  3. Nota: En vitex/phpunit.xml en <testsuites> agregar la prueba en el testsuite correspondiente o agregar un testsuite adecuado.
Sobre el PhpUnit
On metrics
  • valores CRAP
    • Por convención method o function normal (sencilla a mediana): Con crap > 12, se considera CRAPpy.
    • Por convención method o function mediana a complicada (sencilla a mediana): Con crap 24, se considera CRAPpy.
    • Method o function muy complicada: Con crap > 30, se considera CRAPpy.
      https://testing.googleblog.com/2011/02/this-code-is-crap.html
    • Por convención method o function de validación no es para esta medida.
  • % Coverage, es con criterio
    • Considerar 100% coverage vs esfuerzo para lograrlo
    • Ojo con ciertas protecciones/validaciones que son difíciles de lograr el coverage

Patrones

A)Datos de entrada

0.- require_once('../../inc/config.php'); // hace los includes, paths y revisa login realizado 1.- Obten únicamente los datos necesarios, limpialos y protegelos // solo los que necistamos, con su default en su caso y numeros sin comas, fechas en y-m-d fecha y hora y-m-d H:i (24 horas) y sin strim solo textbox sin tinymce $values = ParamsHelper::get( ['keyQuiero'=>'Su Default', ...], numberKeys:['campoNumerico1', ... ] noTrimKeys:[] ); 2.- Checar permisos if(!usuarioPuede()) die("SIN PERMISO"); 3.- Valida los datos: $errores = validateHelper($values); if(!empty($errores)) die("ERRORES TRATA OTRA VEZ ": . dipslayErrores($errores);

Ajax responder basado en Ajax Helper

Clase que la extiende debe: class NombreClase extends AjaxHelper { function __construct() { parent::__construct(); } implementar puedeHacerAccion checando permisos para cada acción implementar cada acción, obteniendo únicamente los datos necesarios, limpiando y validando datos } new NombreClase(); // Corre, y muere no continua en ajax helper debe tener abstract protected function puedeHacerAccion():bool; private function response() {...