yii2
тестирование
Поиск…
Настройка тестовой среды
Установить код:
composer global status
composer global require "codeception/codeception=~2.0.0" "codeception/specify=*" "codeception/verify=*"
Установите Faker:
cd /var/www/yii // Path to your application
composer require --dev yiisoft/yii2-faker:*
Создайте базу данных, которая будет использоваться только для тестов. Вы можете дублировать существующую базу данных или применять миграции:
cd tests
codeception/bin/yii migrate
Отрегулируйте конфигурацию components['db']
в tests/codeception/config/config-local.php
.
Добавьте каталог /var/www/yii/vendor/bin
на ваш путь.
Просмотрите все файлы конфигурации и .yml
.
Запустите веб-сервер, например:
php -S localhost:8080
Запустите тесты:
codecept run
Дополнительная информация:
- http://www.yiiframework.com/doc-2.0/guide-test-environment-setup.html
- http://codeception.com/install
- https://github.com/yiisoft/yii2-app-basic/tree/master/tests
- https://github.com/yiisoft/yii2-app-advanced/tree/master/tests
Примечание. Эти инструкции действительны для версии Yii2 версии 2.0.9. В версии 2.0.10 в соответствии с Sam Dark часть тестирования будет переопределена (и инструкции должны быть обновлены). Версия 2.0.10 должна быть выпущена 11 сентября 2016 года: https://github.com/yiisoft/yii2/milestones
Как насмехаться с ActiveRecord
Если вы хотите высмеять AR, который не пытается подключиться к базе данных, вы можете сделать это следующим образом (если используете PHPUnit):
$post = $this->getMockBuilder('\app\model\Post')
->setMethods(['save', 'attributes'])
->getMock();
$post->method('save')->willReturn(true);
$post->method('attributes')->willReturn([
'id',
'status',
'title',
'description',
'text'
]);
Ловушка заключается в том, что нам нужно переопределить метод attributes (), поскольку по умолчанию ActiveRecord получает список атрибутов из схемы базы данных, которую мы пытаемся избежать.