Подавление запроса при запуске PHPUnit с Kohana 3.2 - PullRequest
1 голос
/ 25 марта 2012

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

Я установил PHPUnit. Я изменил загрузчик, чтобы активировать модуль юнит-тестов Коханы. Я также изменил файл 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>

У меня две проблемы (первая - та, на которую мне действительно нужен ответ):

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

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

1 Ответ

2 голосов
/ 25 марта 2012

В modules / 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, которые требуют очистки.

...