Yii2 advanced и Codeception
Yii2 advanced и Codeception
Всем привет, никак не могу стартануть кодесепшен.
Во-первых, suite файлы лежат в поддиректориях common/ frontend/ и backend/ и команда codecept generate:test unit Example естественно не выполняется, потому что он не может найти сьют файл. Но это ладно, тесты я могу и сам создать.
Во-вторых, при запуске codecept run я вообще ожидал увидеть, что выполнено 0 тестов и как бы все ок, но он почему-то сам полез в common/ тесты и нашел там какие-то 3 теста (Tests\codeception\common.unit Tests (3)), которых там нет, и начал что-то выполнять, в результате чего упал с ошибкой PHP Fatal error: Undefined class constant 'UNKNOWN' in /home/user/.composer/vendor/phpunit/phpunit/src/Framework/TestResult.php on line 581
Собственно, вопросы:
1. Почему такая странная архитектура директории с тестами, что невозможно стандартными методами сгенерировать тест? Как вообще тут пользоваться функциями генерации тестов?
2. Что это за дикая ошибка с константой? Откуда он взял 3 теста, которых физически не существует?
Архитектура каталога tests/ стандартная, из коробки, я ничего там не менял, подправил только немного codeception.yml и выполнил codecept build, который кстати завершился успешно
PS. Я понимаю, что сам дурак и что-то просто делаю не так, но я не смог отыскать адекватную документацию по работе Codeception в архитектуре Yii2 Advanced. Если такая все же имеется, пожалуйста, ткните носом ...
Во-первых, suite файлы лежат в поддиректориях common/ frontend/ и backend/ и команда codecept generate:test unit Example естественно не выполняется, потому что он не может найти сьют файл. Но это ладно, тесты я могу и сам создать.
Во-вторых, при запуске codecept run я вообще ожидал увидеть, что выполнено 0 тестов и как бы все ок, но он почему-то сам полез в common/ тесты и нашел там какие-то 3 теста (Tests\codeception\common.unit Tests (3)), которых там нет, и начал что-то выполнять, в результате чего упал с ошибкой PHP Fatal error: Undefined class constant 'UNKNOWN' in /home/user/.composer/vendor/phpunit/phpunit/src/Framework/TestResult.php on line 581
Собственно, вопросы:
1. Почему такая странная архитектура директории с тестами, что невозможно стандартными методами сгенерировать тест? Как вообще тут пользоваться функциями генерации тестов?
2. Что это за дикая ошибка с константой? Откуда он взял 3 теста, которых физически не существует?
Архитектура каталога tests/ стандартная, из коробки, я ничего там не менял, подправил только немного codeception.yml и выполнил codecept build, который кстати завершился успешно
PS. Я понимаю, что сам дурак и что-то просто делаю не так, но я не смог отыскать адекватную документацию по работе Codeception в архитектуре Yii2 Advanced. Если такая все же имеется, пожалуйста, ткните носом ...
-
- Сообщения: 187
- Зарегистрирован: 2014.08.13, 19:44
Re: Yii2 advanced и Codeception
Тоже хотел подобную тему создать.
Добавлю вопросов.
Вот нужно мне например убрать из тестов все страницы кроме главной.
Ну, вот как вот это сделать?
Посносил все файлы из папки /frontend (ну, в смысле вьюхи и модели).
Посносил тоже из паки tests/frontend/
Сыпятся ошибки.
А ля
[yii\base\InvalidConfigException]
Table does not exist: {{%user}}
Не нашёл ни одного достойного гайда.
Как тесты писать и добавлять вроде разобрался.
Но вот как избавиться от существующих?
Пробовал в корневом файле codeception.yml комментировать строки
include:
# - codeception/common
# - codeception/console
# - codeception/backend
- codeception/frontend
Но нет же, всё равно тянется к бд запросы делать.
Добавлю вопросов.
Вот нужно мне например убрать из тестов все страницы кроме главной.
Ну, вот как вот это сделать?
Посносил все файлы из папки /frontend (ну, в смысле вьюхи и модели).
Посносил тоже из паки tests/frontend/
Сыпятся ошибки.
А ля
[yii\base\InvalidConfigException]
Table does not exist: {{%user}}
Не нашёл ни одного достойного гайда.
Как тесты писать и добавлять вроде разобрался.
Но вот как избавиться от существующих?
Пробовал в корневом файле codeception.yml комментировать строки
include:
# - codeception/common
# - codeception/console
# - codeception/backend
- codeception/frontend
Но нет же, всё равно тянется к бд запросы делать.
Re: Yii2 advanced и Codeception
Это _support/FixtureHelper.php модель дёргает.Drugpunker писал(а):Но нет же, всё равно тянется к бд запросы делать.
-
- Сообщения: 187
- Зарегистрирован: 2014.08.13, 19:44
Re: Yii2 advanced и Codeception
Так. Хоть какой-то просвет. Вечером будут его ковырять.
Наивно ли предположение, что может существовать некая консольная команда, удаляющая все тесты и зависимости в них?
Есть что-то подобное, чтобы ручками готовые тесты не удалять?
Ведь, каждый раз, при каждом новом проекте, придётся проделывать утомительную чистку от тестового (не нужного) кода, тех страниц, которых не существует (были удалены, за ненадобностью).
Наивно ли предположение, что может существовать некая консольная команда, удаляющая все тесты и зависимости в них?
Есть что-то подобное, чтобы ручками готовые тесты не удалять?
Ведь, каждый раз, при каждом новом проекте, придётся проделывать утомительную чистку от тестового (не нужного) кода, тех страниц, которых не существует (были удалены, за ненадобностью).
Re: Yii2 advanced и Codeception
Там их не так много, чтобы было долго вручную удалять.Drugpunker писал(а):Наивно ли предположение, что может существовать некая консольная команда, удаляющая все тесты и зависимости в них?
-
- Сообщения: 187
- Зарегистрирован: 2014.08.13, 19:44
Re: Yii2 advanced и Codeception
Это понятно. Я, чисто гипотетичски. Для бд, migrate\down существует же. Почему бы тогда и в codeception на подобное не рассчитывать.
Re: Yii2 advanced и Codeception
В Gii есть генераторы, но нет ни одной команды по удалению. Как удаляете вручную страницы и модели, также вручную удаляете и соответствующие тесты.Drugpunker писал(а):Для бд, migrate\down существует же.
-
- Сообщения: 187
- Зарегистрирован: 2014.08.13, 19:44
Re: Yii2 advanced и Codeception
Так понимаю, речь идёт о common\_support\FixtureHelper.phpElisDN писал(а):Это _support/FixtureHelper.php модель дёргает.Drugpunker писал(а):Но нет же, всё равно тянется к бд запросы делать.
Закомментил метод fixtures().
Ошибка ушла. Спасибо.
Где можно почитать про устройство Codeception в YII2?
Связи, что куда тянется.
Тот же самый FixtureHelper.php. Для чего он?
Re: Yii2 advanced и Codeception
Здесь посмотреть.Drugpunker писал(а):Где можно почитать про устройство Codeception в YII2?
-
- Сообщения: 187
- Зарегистрирован: 2014.08.13, 19:44
Re: Yii2 advanced и Codeception
А где прописывать тестовую базу?
БД 2 штуки. Одна с дублирует другую, но только с суффиксом _test. Для тестов то бишь.
Файле tests\codeception\config\ config.php прописал следующее:
Но при тестах всё равно использует базу не для тестов, то есть msafronov.yii
Конечно есть ещё tests\codeception\config\frontend\ config.php
Прописывал и туда тоже. Толку нет.
Что мог упустить?
БД 2 штуки. Одна с дублирует другую, но только с суффиксом _test. Для тестов то бишь.
Файле tests\codeception\config\ config.php прописал следующее:
Код: Выделить всё
<?php
/**
* Application configuration shared by all applications and test types
*/
return [
'language' => 'en-US',
'controllerMap' => [
'fixture' => [
'class' => 'yii\faker\FixtureController',
'fixtureDataPath' => '@tests/codeception/common/fixtures/data',
'templatePath' => '@tests/codeception/common/templates/fixtures',
'namespace' => 'tests\codeception\common\fixtures',
],
],
'components' => [
'db' => [
'dsn' => 'mysql:host=localhost;dbname=msafronov.yii2_tests',
],
'mailer' => [
'useFileTransport' => true,
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
],
],
];
Конечно есть ещё tests\codeception\config\frontend\ config.php
Прописывал и туда тоже. Толку нет.
Что мог упустить?
-
- Сообщения: 187
- Зарегистрирован: 2014.08.13, 19:44
Re: Yii2 advanced и Codeception
Скиньте ссылку на нормальный гайд плиз. Без 50-ти часовых видео. Чтоб почитать можно было.
Немогу понять почему не коннектится к тестовой базе.
Немогу понять почему не коннектится к тестовой базе.
-
- Сообщения: 187
- Зарегистрирован: 2014.08.13, 19:44
Re: Yii2 advanced и Codeception
Собрал по кускам следующее:
www/tests/codeception/codeception.yml:
www/tests/codeception/config/config.php
www/tests/codeception/frontend/acceptance.suite.yml
Даже прописал в www/tests/codeception/config/frontend/config.php
Всё равно, не коннектится к тестовой базе.
Что делаю не так?
Неужели нет умельцев сего занятия?
www/tests/codeception/codeception.yml:
Код: Выделить всё
include:
# - codeception/common
# - codeception/console
# - codeception/backend
- codeception/frontend
paths:
log: codeception/_output
settings:
colors: true
config:
modules:
config:
Db:
dsn: mysql:host=localhost;dbname=mydb_tests
user: root
password: passw
# dump: codeception/_data/dump.sql
Код: Выделить всё
<?php
/**
* Application configuration shared by all applications and test types
*/
return [
'language' => 'en-US',
'controllerMap' => [
'fixture' => [
'class' => 'yii\faker\FixtureController',
'fixtureDataPath' => '@tests/codeception/common/fixtures/data',
'templatePath' => '@tests/codeception/common/templates/fixtures',
'namespace' => 'tests\codeception\common\fixtures',
],
],
'components' => [
'db' => [
'dsn' => 'mysql:host=localhost;dbname=mydb_tests',
],
'mailer' => [
'useFileTransport' => true,
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
],
],
];
Код: Выделить всё
# Codeception Test Suite Configuration
# suite for acceptance tests.
# perform tests in browser using the Selenium-like tools.
# powered by Mink (http://mink.behat.org).
# (tip: that's what your customer will see).
# (tip: test your ajax and javascript by one of Mink drivers).
# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES.
class_name: AcceptanceTester
modules:
enabled:
# - PhpBrowser
- WebDriver
- tests\codeception\common\_support\FixtureHelper
- Db
# you can use WebDriver instead of PhpBrowser to test javascript and ajax.
# This will require you to install selenium. See http://codeception.com/docs/04-AcceptanceTests#Selenium
# "restart" option is used by the WebDriver to start each time per test-file new session and cookies,
# it is useful if you want to login in your app in each test.
# - WebDriver
config:
# PhpBrowser:
# PLEASE ADJUST IT TO THE ACTUAL ENTRY POINT WITHOUT PATH INFO
WebDriver:
url: http://mysite.site
browser: firefox
Db:
dsn: mysql:host=localhost;dbname=mydb_tests
user: root
password: passw
# dump: codeception/_data/dump.sql
populate: true
cleanup: true
Код: Выделить всё
<?php
/**
* Application configuration shared by all applications and test types
*/
return [
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=mydb_tests',
'username' => 'root',
'password' => 'passw,
'charset' => 'utf8',
],
],
];
Всё равно, не коннектится к тестовой базе.
Что делаю не так?
Неужели нет умельцев сего занятия?
-
- Сообщения: 1
- Зарегистрирован: 2016.11.06, 13:11
Re: Yii2 advanced и Codeception
А что пишет когда не коннектится. Тыкаю пальцем в небо - "попробуй адрес бд с localhost поменять на 127.0.0.1"
-
- Сообщения: 187
- Зарегистрирован: 2014.08.13, 19:44
Re: Yii2 advanced и Codeception
На тот момент, при тестах запросы осуществлялись к бд сайта, игнорируя настройки, указанные в acceptance.suite.yml.
Проблему так и не решил. Переключился на освоение codeception.
Проблему так и не решил. Переключился на освоение codeception.