Domanda

ho chiesto la stessa domanda in un altro forum , ma non ho ancora avuto fortuna lì. Quindi, per favore mi permetta di chiedere la stessa domanda qui.

Voglio installare Zend_Test per testare il mio codice del controller (sto usando PHP, Zend Framework). Tutto sembra essere corretta e secondo la documentazione ufficiale , ma ho continuato a ottenere un errore.

Per la spiegazione dettagliata del problema e la mia messa a punto, si prega di fare riferimento al post sul forum qui. Qualcuno mi può dare un indizio, cosa c'è di sbagliato con la mia configurazione?

Grazie! Saluti, Andree.

È stato utile?

Soluzione

Ho avuto questo problema prima di quando si utilizza setFallbackAutoloader (vero), che si sono, ma non sono mai stato in grado di rintracciare la causa principale. Se Google l'errore si trova un paio di segnalazioni di bug ZF citarlo.

Può confermare che si utilizza anche setFallbackAutoloader (true) nella vostra applicazione? Se no, allora è possibile rimuovere quella linea dal TestHelper.php. Se si, allora prova ad aggiungere:

$autoLoader->suppressNotFoundWarnings(true);

subito dopo che, questo risolve normalmente il problema per me (ma può causare alcuni altri problemi).

Altri suggerimenti

Dai un'occhiata a questo tutorial, e seguire passo dopo passo. Funziona bene per me.

Esercitazione phpunit + Zend Framework

Ho dato una conferenza su questo tema a diverse conferenze, e c'è anche un webinar sul Zend sito (vedi link sotto).

Quando guardo i vostri script di installazione, avete un sacco di confusione in là che rende difficile mantenere una volta che aggiungere ulteriori funzionalità alla vostra applicazione.

La mia classe TestHelper contiene solo la seguente:

<?php
/*
 * Example test helper script taken from the blog article of Matthew Weier
 * O'Phinney on September 11, 2008
 * 
 * {@link http://weierophinney.net/matthew/archives/190-Setting-up-your-Zend_Test-test-suites.html}
 */

/*
 * Start output buffering
 */
//ob_start();

/*
 * Set error reporting to the level to which code must comply.
 */
error_reporting( E_ALL | E_STRICT );

/*
 * Set default timezone
 */
date_default_timezone_set('Europe/Brussels');

/*
 * Testing environment
 */
if (!defined('APPLICATION_ENV'))
    define('APPLICATION_ENV', 'testing');

/*
 * Determine the root, library, tests, and models directories
 */
$root        = realpath(dirname(__FILE__) . '/../');
$library     = $root . '/library';
$tests       = $root . '/tests';
$models      = $root . '/application/models';
$controllers = $root . '/application/controllers';

/*
 * Set up application and test path constant for easy access helper classes
 */
if (!defined('APPLICATION_PATH'))
    define('APPLICATION_PATH', $root . '/application');
define('TEST_PATH', $tests);

/*
 * Prepend the library/, tests/, and models/ directories to the
 * include_path. This allows the tests to run out of the box.
 */
$localFrameworkPaths = array (
    '/usr/local/zend/share/ZendFramework/library',
    '/opt/ZendFramework',
);
$include_path = get_include_path();
foreach ($localFrameworkPaths as $zfPath) {
    $include_path = str_replace($zfPath . PATH_SEPARATOR, '', $include_path);
}
$path = array(
    APPLICATION_PATH,
    $models,
    $library,
    $tests,
    $include_path,
);
set_include_path(implode(PATH_SEPARATOR, $path));

/**
 * Register autoloader
 */
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();

/**
 * Store application root in registry
 */
Zend_Registry::set('testRoot', $root);
Zend_Registry::set('testBootstrap', $root . '/application/bootstrap.php');

/**
 * Say to the sessions we use unit testing here
 */
Zend_Session::$_unitTestEnabled = true;

/*
 * Unset global variables that are no longer needed.
 */
unset($root, $library, $models, $controllers, $tests, $path);

Questo è simile alle impostazioni originali MWOP fornito sul suo blog (si veda il link in cima alla classe).

E questo è tutto, non c'è bisogno di preoccuparsi per l'aggiunta di moduli manualmente o tenere traccia dei cambiamenti nella vostra architettura applicativa in quanto questo utilizzerà proprio bootstrap dell'applicazione.

Per ulteriori informazioni, controlli anche questi link:

Fammi sapere se ha fatto il lavoro per il vostro caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top