Тестирование контроллера с Zend_Test - PullRequest
0 голосов
/ 22 июня 2010

Я задавал тот же вопрос на другом форуме , но мне пока не повезло Поэтому, пожалуйста, позвольте мне задать тот же вопрос здесь.

Я хочу настроить Zend_Test для проверки кода моего контроллера (я использую PHP, Zend Framework). Кажется, все правильно и согласно официальной документации , но я продолжал получать сообщение об ошибке.

Подробное описание проблемы и моих настроек см. На форуме здесь. Кто-нибудь может дать мне подсказку, что не так с моей настройкой?

Спасибо! С уважением, Андрей.

Ответы [ 3 ]

1 голос
/ 22 июня 2010

Раньше у меня была эта проблема при использовании setFallbackAutoloader (true), которым вы являетесь, но я никогда не мог отследить основную причину.Если вы погуглите ошибку, вы найдете несколько отчетов об ошибках ZF, в которых упоминается ее.

Можете ли вы подтвердить, что вы также используете setFallbackAutoloader (true) в своем приложении?Если нет, то вы можете удалить эту строку из вашего TestHelper.php.Если да, попробуйте добавить:

$autoLoader->suppressNotFoundWarnings(true);

сразу после этого, это обычно решает проблему для меня (но может вызвать некоторые другие проблемы).

0 голосов
/ 16 февраля 2011

Я выступал по этому вопросу на нескольких конференциях, и даже на веб-сайте Zend есть вебинар (см. Ссылки ниже).

Когда я смотрю на ваши установочные сценарии, у вас многобеспорядок в нем, что затрудняет его обслуживание после добавления дополнительных функций в приложение.

Мой класс TestHelper содержит только следующее:

<?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);

Это похоже на исходные настройки MWOP, предоставленные наего блог (см. ссылку в верхней части класса).

И все, не нужно беспокоиться о добавлении модулей вручную или отслеживании изменений в архитектуре вашего приложения, так как при этом будет использоваться собственный загрузчик вашего приложения.

Для получения дополнительной информации обращайтесь по следующим ссылкам:

Дайте мне знать, справился ли он и с вашим делом.

0 голосов
/ 22 июня 2010

Ознакомьтесь с этим уроком и следуйте ему шаг за шагом.У меня отлично работает.

Учебник PHPUNIT + Zend Framework

...