unit-testing cakephp phpunit cakephp-1.3

unit testing - Integrando PHPUnit con CakePHP 1.3



unit-testing cakephp-1.3 (2)

He estado buscando un tutorial para ayudarme a integrar PHPUnit con CakePHP. Buscando usar las pruebas de Selenio también, así que prefiero PHPUnit.

He intentado seguir el tutorial en http://cakebaker.42dh.com/2006/03/22/selenium/ pero parece que no funciona. ¿Algún buen tutorial por ahí?

¡Gracias!



Es relativamente fácil. Utilizo Cake 1.3 de la instalación del compositor. Así es como se ve mi compositor.json:

{ "config": { "vendor-dir": "vendors/composer" }, "require": { "phpunit/phpunit": "3.7.*", "cakephp/cakephp-1.3": "1.3", }, "repositories": [ { "type": "package", "package": { "name": "cakephp/cakephp-1.3", "version": "1.3", "source": { "url": "https://github.com/cakephp/cakephp.git", "type": "git", "reference": "1.3" } } } ] }

Luego, el archivo phpunit bootstrap.php en el directorio de pruebas:

<?php include(''../vendors/composer/autoload.php''); include(''../webroot/index.php'');

Este es phpunit.xml del mismo directorio:

<?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="bootstrap.php" backupStaticAttributes="false" cacheTokens="false" colors="false" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" forceCoversAnnotation="false" mapTestClassNameToCoveredClassName="false" printerClass="PHPUnit_TextUI_ResultPrinter" processIsolation="false" stopOnError="false" stopOnFailure="false" stopOnIncomplete="false" stopOnSkipped="false" testSuiteLoaderClass="PHPUnit_Runner_StandardTestSuiteLoader" strict="false" verbose="false" > <testsuites> <testsuite name="AllTests"> <directory>.</directory> </testsuite> </testsuites> <filter> <blacklist> <directory suffix=".php"></directory> <file></file> <exclude> <directory suffix=".php"></directory> <file></file> </exclude> </blacklist> <whitelist processUncoveredFilesFromWhitelist="true"> <directory suffix=".php"></directory> <file></file> <exclude> <directory suffix=".php"></directory> <file></file> </exclude> </whitelist> </filter> </phpunit>

No olvide cargar sus clases de aplicación en la configuración de prueba. Puedes hacerlo cakephp manera. Por ejemplo, si su controlador se denomina calendario, su calendarioTest.php puede verse así:

<?php /** * Class ComponentsCommonTest * @property calendarController $calendarController */ class CalendarTest extends PHPUnit_Framework_TestCase { /** * @var calendarController $calendarController */ private $calendarController; function setUp() { App::import(''Core'', array(''View'', ''Controller'', ''Model'', ''Router'')); App::import(''Controller'', ''Calendar''); $this->calendarController =& new CalendarController(); $this->calendarController->constructClasses(); $this->calendarController->layout = null; } }

Lo mismo para modelos, clases de proveedores, etc. Funciona muy bien para mi