Я читаю книгу "Изучаю ZF2: Изучение по примеру" Слави Караджова. Теперь я на страницах 103-107. Я пытаюсь запустить тест PHPUnit, как описано, но ничего не происходит... Где проблема и как ее исправить?
Чтобы войти в ту же ситуацию, вам придется:
git clone https://github.com/slaff/learnzf2.git .
composer.phar self-update
composer.phar install
git stash
git checkout 'ch-unittest'
Это должно привести к тому же файлу, что и у меня (= как в книге).
Теперь я пытаюсь запустить эту команду:
ZF2_PATH='pwd'/vendor/zendframework/zendframework/library \php vendor/bin/phpunit -c module/User/tests/
И команда работает не так, как ожидалось... Я ожидал бы, что результат результата теста или так, но все, что я получаю, - это выход, который похож на содержимое, которое у меня есть в файле vendor/bin/phpunit
. Это:
#!/usr/bin/env sh
SRC_DIR="'pwd'"
cd "'dirname "$0"'"
cd "../phpunit/phpunit/composer/bin"
BIN_TARGET="'pwd'/phpunit"
cd "$SRC_DIR"
"$BIN_TARGET" "$@"
Точнее, первая строка (#!/Usr/bin/env sh) не отображается на выходе. Остальные действительно появляются.
**
Я запускаю код на ОС Windows 8.1 Pro, используя Git Bash (версия git 1.9.4.msysgit.1). Похоже, что ключевое слово php
хорошо работает, так как написание php -v
работает так, как ожидалось (выходы PHP 5.5.12 (cli) (built: Apr 30 2014 11:20:58)...
)
Мое собственное предположение было бы то, что Git bash не может решить код, который он находит в vendor/bin/phpunit, поэтому он не работает... Но это только предположение...
РЕДАКТИРОВАТЬ # 1: просто попробовал на общем хостинге с набором LAMP. Все прошло хорошо. Похоже, что Zend Framework 2 и Windows не очень дружелюбны в некоторых случаях (например, в только что упомянутом блоке тестирования). Похоже, что очень хорошая книга (без сарказма, это действительно хорошая) было бы лучше, если бы у нее была еще одна глава о чем-то вроде VirtualBox + Vagrant + PuPHPet (или что-то близкое к этому).
Строка файла composer.json, используемая в книге: phpunit/phpunit": "3.7.*
Я изменил phpunit/phpunit": "3.7.*
phpunit/phpunit": "4.5.*
Как 4.5 версия PHPUnit является текущей стабильностью. Затем, конечно же: php composer.phar update
Тогда этот будет работать красиво:
ZF2_PATH='pwd'/vendor/zendframework/zendframework/library \php vendor/phpunit/phpunit/phpunit -c module/User/tests/
Вышеприведенная команда не такая же, как в книге.
Проверено на Windows, 8.1, Ubuntu 14.04 LTS Trusty x64, изолированная среда разработки обеспечивают здесь. Работает хорошо.
Существует также способ сделать PHPUnit 3.7. * Работать на всех системах (те же самые проверенные мной системы), но команда должна быть изменена на:
ZF2_PATH='pwd'/vendor/zendframework/zendframework/library \php vendor/phpunit/phpunit/composer/bin/phpunit -c module/User/tests/
Вышеприведенная команда не такая же, как в книге.
Итак... Здесь у нас есть два способа упоминания о том, чтобы пойти с проверками PHPUnit, чтобы заставить их работать. Мы должны решить, что ведьма из двух лучше. Я бы предпочел, чтобы с обновленной версией PHPUnit до 4.5 на данный момент.
Большое спасибо Слави Караджову - автору книги, который создал изолированную среду разработки для программирования с Zend Framework 2 (ZF2).
Кроме того, благодаря @jamaldo, @steeler и @malte, чья деятельность (сообщение, комментарии) привела меня на правильный путь. Сообщение, о котором я говорю, находится здесь: https://stackoverflow.com/questions/23881289/php-vendor-bin-phpunit-is-printing-in-console-a-text