Zend Framework: Как запустить PHPUnit для тестирования форм? - PullRequest
3 голосов
/ 17 июня 2010

У меня проблемы с настройкой фильтров / валидаторов для корректной работы с моей формой, поэтому я хочу создать модульный тест для проверки того, что данные, которые я отправляю в мою форму, фильтруются и проверяются правильно.* Я начал с автоматической генерации теста PHPUnit в Zend Studio, который дает мне следующее:

<?php
require_once 'PHPUnit/Framework/TestCase.php';

/**
 * Form_Event test case.
 */
class Form_EventTest extends PHPUnit_Framework_TestCase
{
    /**
     * @var Form_Event
     */
    private $Form_Event;
    /**
     * Prepares the environment before running a test.
     */
    protected function setUp ()
    {
        parent::setUp();
        // TODO Auto-generated Form_EventTest::setUp()
        $this->Form_Event = new Form_Event(/* parameters */);
    }
    /**
     * Cleans up the environment after running a test.
     */
    protected function tearDown ()
    {
        // TODO Auto-generated Form_EventTest::tearDown()
        $this->Form_Event = null;
        parent::tearDown();
    }
    /**
     * Constructs the test case.
     */
    public function __construct ()
    {    // TODO Auto-generated constructor
    }
    /**
     * Tests Form_Event->init()
     */
    public function testInit ()
    {
        // TODO Auto-generated Form_EventTest->testInit()
        $this->markTestIncomplete(
        "init test not implemented");
        $this->Form_Event->init(/* parameters */);
    }
    /**
     * Tests Form_Event->getFormattedMessages()
     */
    public function testGetFormattedMessages ()
    {
        // TODO Auto-generated Form_EventTest->testGetFormattedMessages()
        $this->markTestIncomplete(
        "getFormattedMessages test not implemented");
        $this->Form_Event->getFormattedMessages(/* parameters */);
    }
}

, поэтому я открываю терминал, перехожу в каталог и пытаюсь запустить тест:

$ cd my_app/tests/unit/application/forms
$ phpunit EventTest.php

Fatal error: Class 'Form_Event' not found in .../tests/unit/application/forms/EventTest.php on line 19

Итак, я добавляю require_once вверху, чтобы включить мой класс Form, и пробую снова.Теперь он говорит, что не может найти другой класс.Я включаю это и пробую снова.Затем он говорит, что не может найти другой класс, другой класс и так далее.У меня есть все эти зависимости от всех этих Zend_Form классов.Что я должен делать?Как мне пройти тестирование моей Формы, чтобы убедиться, что мои Валидаторы и Фильтры подключены правильно, и что он делает то, что от меня ожидают.Или я думаю об этом не так?

1 Ответ

3 голосов
/ 17 июня 2010

вы должны использовать конфигурацию приложения Zend Framework для своих тестов Unitt. Если вы работаете с «XML» -конфигурацией PHPUnit, добавьте файл начальной загрузки, который запускается до выполнения тестов.

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="TestConfig.php">
    <testsuite name="XY">
        <directory>./</directory>
    </testsuite>
</phpunit>

В вашем TestConfig.php настройте автозагрузчик и другие необходимые ресурсы или используйте config.ini из вашего приложения, как в моем примере.

$includeConfig = parse_ini_file(TEST_PATH . '/config/config.ini', true);

set_include_path(
    implode(PATH_SEPARATOR, $includeConfig['includes'])
    . PATH_SEPARATOR
    . TEST_PATH . PATH_SEPARATOR
    . get_include_path()
);
unset($includeConfig);

require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('App_');

Если вам нужно больше советов, ознакомьтесь с этим руководством по Zend Framework с PHPUNIT. PHPUnit + Zend Framework

...