Reputation:
i'm new to unit test and i'm trying to make work a first test !
I get this long error twice:
Fatal Error :Maximum function nesting level of '100' reached, aborting in
C:\wamp\www\portailmg\dev\library\Zend\Test\PHPUnit\ControllerTestCase.php on line 27
9
My bootstrap.php:
<?php
error_reporting( E_ALL | E_STRICT );
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
date_default_timezone_set('Europe/London');
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../applications/portail'));
define('APPLICATION_ENV', 'development');
define('LIBRARY_PATH', realpath(dirname(__FILE__) . '/../library'));
define('TESTS_PATH', realpath(dirname(__FILE__)));
$_SERVER['SERVER_NAME'] = 'http://localhost';
$includePaths = array(LIBRARY_PATH, get_include_path());
set_include_path(implode(PATH_SEPARATOR, $includePaths));
require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
Zend_Session::$_unitTestEnabled = true;
Zend_Session::start();
my phpunit.xml:
<phpunit bootstrap="./bootstrap.php" colors="false">
<testsuite name="MyApp">
<directory>./application/</directory>
<directory>./library/</directory>
</testsuite>
<filter>
<whitelist>
<directory suffix=".php">../application</directory>
<directory suffix=".php">../library/Custom</directory>
<exclude>
<directory suffix=".phtml">../application/views</directory>
<file>../application/Bootstrap.php</file>
</exclude>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="./log/coverage" charset="UTF-8"
yui="true" highlight="false" lowUpperBound="35" highLowerBound="70"/>
</logging>
</phpunit>
ControllerTestCase.php
<?php
class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
public $application;
public function setUp()
{
$this->application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '\configs\application.ini'
);
$this->bootstrap = array($this, 'bootstrap');
parent::setUp();
}
public function tearDown()
{
Zend_Controller_Front::getInstance()->resetInstance();
$this->resetRequest();
$this->resetResponse();
$this->request->setPost(array());
$this->request->setQuery(array());
}
}
?>
HomeControllerTest.php
<?php
require_once 'application/ControllerTestCase.php';
require_once 'application/controllers/HomeControllerTest.php';
class HomeControllerTest extends ControllerTestCase
{
public function testLoginAction()
{
$this->dispatch('/index/logincra'); //distribuer l'URL à tester en utilisant la méthode dispatch()
$this->assertController('index'); //spécifie le controller à tester
$this->assertAction('logincra'); //spécifie l'action à tester
/*
Assert against DOM selection; should contain exact number of nodes
param: string $path CSS selector path
param: string $count Number of nodes that should match
param: string $message
return: void
*/
$this->assertQueryCount('div.login', 1);
}
public function testlogincraAction()
{
$this->getRequest()
->setMethod('POST')
->setPost(array("username" => "[email protected]",
"password" => "password"));
$this->dispatch('/index/logincra');
$oLdap = new Mediagong_Ldap_Connect($_POST["username"], $_POST["password"]);
$this->assertEquals($oLdap->isLoggin(), true);
$this->assertRedirectTo('/index');
}
}
Arborescence:
dev
applications
portail
configs
controllers
layouts
models
services
views
Bootstrap.php
htdocs
..
..
tests
application
controllers
controllerTestCase.php
library
log
bootstrap.php
phpunit.xml
Thanks in advance for your help
Upvotes: 6
Views: 4367
Reputation:
A simple solution solved my problem. I just commented the:
"zend_extension = "d:/wamp/bin/php/php5.3.8/zend_ext/php_xdebug-2.1.2-5.3-vc9.dll"
in php.ini file. This extension was limiting the stack to 100 so I disabled it. The recursive function is now working as anticipated.
Upvotes: 0
Reputation: 6410
In case you are using Xdebug you might want to increase the max_nesting_level
. Have a look at the Xdebug manual
xdebug.max_nesting_level
Type: integer, Default value: 100
Controls the protection mechanism for infinite recursion protection. The value of this setting is the maximum level of nested functions that are allowed before the script will be aborted.
Just add the value to your php.ini
. I have mine at around 250 depending on the amount of tests you run and their complexity.
Upvotes: 7