Подавление запроса при запуске PHPUnit с Kohana 3.2

У меня возникли проблемы с правильной настройкой модульного тестирования в Kohana 3.2.

Я установил PHPUnit. Я изменил загрузчик, чтобы активировать модуль unittest Kohana. Я также изменил файл index.php, чтобы он выглядел так:

if ( ! defined('SUPPRESS_REQUEST'))
{
    echo Request::factory()
        ->execute()
        ->send_headers()
        ->body();
}

Я создал папку test в папке моего приложения. В него я вставил файл phpunit.xml, который выглядит так:

<phpunit colors="true" bootstrap="../../index.php">
<testsuites>
    <testsuite name="Kohana Tests">
        <directory>./</directory>
    </testsuite>
</testsuites>

I am having two problems (the first one is the one I really need an answer to):

1- Когда я захожу в тесты из командной строки и пытаюсь запустить phpunit, кажется, что SUPPRESS_REQUEST никогда не устанавливается в true. Запрос выполняется, поэтому тесты не выполняются. Единственный способ успешно запустить тесты — это на мгновение закомментировать всю строку Request::factory() в index.php. Кто-нибудь знает, как обойти эту проблему? Если я должен где-то добавить определение ('SUPPRESS_REQUEST', true), где я должен это сделать? Я новичок в Kohana и PHPUnit.

2- PHPUnit жалуется, что переменная REMOTE_ADDR не установлена.

PHP Notice:  Undefined index: REMOTE_ADDR in
/Users/**/Sites/root/application/bootstrap.php on line 76

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


person Emilie    schedule 25.03.2012    source источник


Ответы (1)


В модулях/unittest есть файл bootstrap.php, который отлично работает с phpunit.

Мой phpunit.xml, который ссылается на этот бутстрап, таков:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true" bootstrap="../../modules/unittest/bootstrap.php">
    <testsuites>
        <testsuite name="Kohana Tests">
            <directory>./</directory>
        </testsuite>
    </testsuites>
</phpunit>

Кроме того, для проблемы REMOTE_ADDR, когда phpunit запускает CLI-версию PHP, которая, как я думаю, не имеет доступа к переменной REMOTE_ADDR. Если вы посмотрите на загрузчик из unittest, он не использует глобальные переменные, связанные с http.

Я не уверен, почему вы должны запускать код Request::factory в своем бутстрапе. В моей установке vanilla 3.2 код Request::factory находится в index.php, а не в bootstrap.php, и не имеет никакой ссылки на SUPRESS REQUEST. У вас могут быть устаревшие файлы из установки до версии 3.2, которые необходимо очистить.

person gspatel    schedule 25.03.2012
comment
Спасибо, вы правы, это действительно была проблема. Я следил за учебником, в котором говорилось, что он указывает на index.php (который на самом деле находится там, где находится мой Request::factory - извините, если это неясно). Указание на тестовый бутстрап решило проблему! - person Emilie; 26.03.2012