Nasıl Zend MVC ve Zend_Test ile birim test için bootstrap mı?

0 Cevap php

Ben Zend Framework test birimi kurma ile ilgili birçok mesaj okudum ve ben sadece çalıştırmak için bile basit bir birim test almak mümkün olmamıştır. Sorun kurma ve önyükleme ortamı test ile. Ben ZFW dokümanlar kullanarak yolları basit çalıştı, ama ben her zaman bu hatayı alıyorum:

Zend_Config_Exception: parse_ini_file(/usr/local/zend/apache2/htdocs/APPBASE/tests/application.ini[function.parse-ini-file]: Böyle bir dosya ya da dizin yok: failed to open stream

İşte phpunit.xml olduğunu:

<phpunit bootstrap="./application/bootstrap.php" colors="true">
    <testsuite name="ApplicationTestSuite">
        <directory>./application/</directory>
        <directory>./library/</directory>
    </testsuite>
    <filter>
        <whitelist>
            <directory suffix=".php">../application</directory>
            <directory suffix=".php">../application/library</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="false" highlight="false" lowUpperBound="35" highLowerBound="70"/>
    </logging>
</phpunit>

İşte benim önyükleme (test / uygulama / bootstrap.php) 'dir:

<?php
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../../application'));
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ?   getenv('APPLICATION_ENV') : 'development'));

set_include_path(implode(PATH_SEPARATOR, array(
   realpath(APPLICATION_PATH . '/library'),
    get_include_path(),
)));

>

I (testler / application / controllers / AuthControllerTest.php) sınamak için çalışıyorum denetleyicisi:

<?php
require_once 'ControllerTestCase.php';
/**
 * AuthController test case.
 */
class AuthControllerTest extends ControllerTestCase
{
    /**
     * @var AuthController
     */
    private $AuthController;
    /**
     * Prepares the environment before running a test.
     */
    public function setUp ()
    {
        parent::setUp();
        // TODO Auto-generated AuthControllerTest::setUp()
        $this->AuthController = new AuthController(/* parameters */);
    }
    /**
     * Cleans up the environment after running a test.
     */
    public function tearDown ()
    {
        // TODO Auto-generated AuthControllerTest::tearDown()
        $this->AuthController = null;
        parent::tearDown();
    }


    public function testCallWithoutActionShouldRedirectToLoginAction()
    {
        $this->dispatch('/auth');
        $this->assertController('auth');
        $this->assertAction('login');
    }
}

ve ControllerTestCase.php (in / test / uygulama / denetleyiciler):

<?php
require_once 'Zend/Application.php';
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';

abstract class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
 public $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();
    }

 public function tearDown()
 {
  Zend_Controller_Front::getInstance()->resetInstance();
  $this->resetRequest();
  $this->resetResponse();
  $this->request->setPost(array());
  $this->request->setQuery(array());
 }

}

Benim application.ini (AppBase / yapılandırmaları / application.ini):

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.view[] = ""
resources.view.doctype = "XHTML1_STRICT"
phpSettings.date.timezone = 'America/Chicago';

[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

Hata mesajında ​​yol benim bootstrap belirtilen yolu ile hizaya unutmayın. "$ This-> uygulama> önyükleme ();" Ben o çizgi bir noktada düşündüm ben bunu yorumladı, ama ne olursa olsun aynı hata var benim düzenli uygulamasının ön yükleme yürütme ve uygulama yolunu değişiyor olabilir. Ben dışarı yorumladı bu Zend Studio içinde "PHP Birim Testi olarak çalıştır" Eğer, ben orijinal Zend Yapılandırma İstisna olsun. Ben komut ile phpunit çalıştırırsanız, o benim app denetleyicileri herhangi bulamıyorum. Ben yorumsuz ve komut ile çalıştırdığınızda, ben Zend Yapılandırma özel durum olsun. Zend Studio Koşu zaman Zend Yapılandırma istisna sonuçlanır.

Herkes uygulama yolu doğru ayarlanmamış alamadım neden olarak bazı bilgiler sunabilir miyim?

0 Cevap