Intereting Posts
Как разместить JSON на PHP с завитой PHP не загружает php_pgsql.dll в Windows Как установить автоматический разрыв строки PhpExcel? Facebook – Ошибка анализа URL-адреса ввода, данные не были кэшированы или данные не были очищены Неустранимая ошибка: вызов функции-члена fetch_array () для не-объекта в Лучшая древовидная структура php / Mysql JQUERY JSON возвратил неопределенные Может ли модель CakePHP изменить свою таблицу без повторного создания экземпляра? DOM PDF генерирует только 1 страницу pdf пропустить оставшееся содержимое Связывание MySQL с локальным портом через SSH – работает в консоли, а не через PHP shell_exec () в Mac OSX Кажется, не может загрузиться CSV с использованием PHP Curl, когда ответ является содержимым: вложение Как построить массив JSON из базы данных mysql Могу ли я настроить контент, специфичный для среды? Параметры выбора формы symfony2 Получение результата mysql обновления элемента

нужна помощь для теста zend unit

Я использую модульный тест для тестирования проекта zend, это application.ini

[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 resources.frontController.params.displayExceptions = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" appnamespace = "Application" ; modules resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" resources.frontController.moduleControllerDirectoryName = "controllers" resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.modules[] = "" resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts" resources.layout.layout = "layout" resources.view[] = resources.view.doctype = "XHTML1_STRICT" ; database resources.db.adapter = "PDO_MYSQL" resources.db.params.dbname = "demodev" resources.db.params.password = "demo_core_pass" resources.db.params.username = "demo_core_user" resources.db.params.host = "localhost" resources.db.isDefaultTableAdapter = true ; session resources.session.save_path = APPLICATION_PATH "/../data/session" resources.session.use_only_cookies = true ;resources.session.remember_me_seconds = 10 [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1 [amsterdam : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1 

это phpunit.xml:

 <phpunit bootstrap="./application/bootstrap.php" colors="true"> <testsuite> <directory>./</directory> </testsuite> <filter> <whitelist> <directory suffix="MyApp.php">../application/</directory> <exclude> <file>../application/Bootstrap.php</file> <file>../application/controllers/ErrorController.php</file> <directory suffix=".phtml">../application/</directory> </exclude> </whitelist> </filter> <logging> <log type="coverage-html" target="./log/report" charset="UTF-8" yui="true" highlight="true" lowUpperBound="50" highLowerBound="80"/> <log type="testdox-html" target="./log/testdox.html" /> </logging> 

это bootstrap.php

 <?php error_reporting(E_ALL); // Define path to application directory defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../../application')); // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing')); // Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), get_include_path(), ))); require_once 'Zend/Application.php'; require_once 'ControllerTestCase.php'; //require_once 'MyApp.php'; 

это ControllerTestCase.php

 <?php require_once 'Zend/Application.php'; require_once 'Zend/Test/PHPUnit/ControllerTestCase.php'; class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase { protected $application; public function setUp() { $this->bootstrap = array($this,'appBootstrap'); parent::setUp(); } public function appBootstrap() { $this->application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH.'/configs/application.ini'); $this->application->bootstrap(); } } 

это IndexControllerTest.php

 <?php 

require_once 'Zend / Test / PHPUnit / ControllerTestCase.php'; class IndexControllerTest расширяет ControllerTestCase {

 public function testHomePage() { $this->dispatch('/index'); $this->assertController('index'); $this->assertAction('menu'); } 

}

когда я иду в папку тестов, запускаю команду phpunit, она дает мне эту ошибку:

 D:\PHP\apache2\htdocs\demo_src\tests>phpunit PHPUnit 3.5.13 by Sebastian Bergmann. PHP Fatal error: Call to a member function hasResource() on a non-object in D:\ PHP\apache2\htdocs\demo_src\application\controllers\ErrorController.php on line 46 Fatal error: Call to a member function hasResource() on a non-object in D:\PHP\a pache2\htdocs\demo_src\application\controllers\ErrorController.php on line 46 

Как я могу исправить эту проблему?

Когда я изменяю IndexControllerTest как один тест, например:

 <?php class IndexControllerTest extends ControllerTestCase { public function testHomePage() { $this->assertTrue(true); } } 

он работает, но когда я меняю его на

 <?php class IndexControllerTest extends ControllerTestCase { public function testHomePage() { $this->dispatch('/'); } } 

Строка 46 в ErrorController.php:

 public function getLog() { $bootstrap = $this->getInvokeArg('bootstrap'); if (!$bootstrap->hasResource('Log')) {// this is line 46 return false; } $log = $bootstrap->getResource('Log'); return $log; } 

он все равно дает мне ту же ошибку, любое предложение?

Попробуйте этот класс IndexControllerTest

 class IndexControllerTest extends Zend_Test_PHPUnit_ControllerTestCase { public function setUp() { $this->bootstrap = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); parent::setUp(); } public function testHomePage() { $params = array( 'action' => 'index', 'controller' => 'index', 'module' => 'default' ); $url = $this->url($this->urlizeOptions($params)); $this->dispatch($url); // assertions $this->assertModule($params['module']); $this->assertController($params['index']); $this->assertAction($params['action']); } }