Yii2 advanced и Codeception

Всё про тестирование в Yii 2.0
Ответить
Zvook
Сообщения: 21
Зарегистрирован: 2013.03.06, 13:06

Yii2 advanced и Codeception

Сообщение Zvook »

Всем привет, никак не могу стартануть кодесепшен.
Во-первых, 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. Если такая все же имеется, пожалуйста, ткните носом ...
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Yii2 advanced и Codeception

Сообщение Drugpunker »

Тоже хотел подобную тему создать.

Добавлю вопросов.

Вот нужно мне например убрать из тестов все страницы кроме главной.
Ну, вот как вот это сделать?

Посносил все файлы из папки /frontend (ну, в смысле вьюхи и модели).
Посносил тоже из паки tests/frontend/

Сыпятся ошибки.

А ля
[yii\base\InvalidConfigException]
Table does not exist: {{%user}}


Не нашёл ни одного достойного гайда.

Как тесты писать и добавлять вроде разобрался.
Но вот как избавиться от существующих?


Пробовал в корневом файле codeception.yml комментировать строки
include:
# - codeception/common
# - codeception/console
# - codeception/backend
- codeception/frontend


Но нет же, всё равно тянется к бд запросы делать.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Yii2 advanced и Codeception

Сообщение ElisDN »

Drugpunker писал(а):Но нет же, всё равно тянется к бд запросы делать.
Это _support/FixtureHelper.php модель дёргает.
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Yii2 advanced и Codeception

Сообщение Drugpunker »

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

Есть что-то подобное, чтобы ручками готовые тесты не удалять?

Ведь, каждый раз, при каждом новом проекте, придётся проделывать утомительную чистку от тестового (не нужного) кода, тех страниц, которых не существует (были удалены, за ненадобностью).
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Yii2 advanced и Codeception

Сообщение ElisDN »

Drugpunker писал(а):Наивно ли предположение, что может существовать некая консольная команда, удаляющая все тесты и зависимости в них?
Там их не так много, чтобы было долго вручную удалять.
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Yii2 advanced и Codeception

Сообщение Drugpunker »

Это понятно. Я, чисто гипотетичски. Для бд, migrate\down существует же. Почему бы тогда и в codeception на подобное не рассчитывать.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Yii2 advanced и Codeception

Сообщение ElisDN »

Drugpunker писал(а):Для бд, migrate\down существует же.
В Gii есть генераторы, но нет ни одной команды по удалению. Как удаляете вручную страницы и модели, также вручную удаляете и соответствующие тесты.
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Yii2 advanced и Codeception

Сообщение Drugpunker »

ElisDN писал(а):
Drugpunker писал(а):Но нет же, всё равно тянется к бд запросы делать.
Это _support/FixtureHelper.php модель дёргает.
Так понимаю, речь идёт о common\_support\FixtureHelper.php

Закомментил метод fixtures().

Ошибка ушла. Спасибо.

Где можно почитать про устройство Codeception в YII2?
Связи, что куда тянется.
Тот же самый FixtureHelper.php. Для чего он?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Yii2 advanced и Codeception

Сообщение ElisDN »

Drugpunker писал(а):Где можно почитать про устройство Codeception в YII2?
Здесь посмотреть.
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Yii2 advanced и Codeception

Сообщение Drugpunker »

А где прописывать тестовую базу?
БД 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,
        ],
    ],
];
 
Но при тестах всё равно использует базу не для тестов, то есть msafronov.yii

Конечно есть ещё tests\codeception\config\frontend\ config.php
Прописывал и туда тоже. Толку нет.

Что мог упустить?
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Yii2 advanced и Codeception

Сообщение Drugpunker »

Скиньте ссылку на нормальный гайд плиз. Без 50-ти часовых видео. Чтоб почитать можно было.

Немогу понять почему не коннектится к тестовой базе.
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Yii2 advanced и Codeception

Сообщение Drugpunker »

Собрал по кускам следующее:

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
 
www/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=mydb_tests',
        ],
        'mailer' => [
            'useFileTransport' => true,
        ],
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
        ],
    ],
];
 
www/tests/codeception/frontend/acceptance.suite.yml

Код: Выделить всё

# 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


Даже прописал в www/tests/codeception/config/frontend/config.php

Код: Выделить всё

<?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',
        ],
    ],
];

Всё равно, не коннектится к тестовой базе.
Что делаю не так?

Неужели нет умельцев сего занятия?
psirus0588
Сообщения: 1
Зарегистрирован: 2016.11.06, 13:11

Re: Yii2 advanced и Codeception

Сообщение psirus0588 »

А что пишет когда не коннектится. Тыкаю пальцем в небо - "попробуй адрес бд с localhost поменять на 127.0.0.1"
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Yii2 advanced и Codeception

Сообщение Drugpunker »

На тот момент, при тестах запросы осуществлялись к бд сайта, игнорируя настройки, указанные в acceptance.suite.yml.
Проблему так и не решил. Переключился на освоение codeception.
Ответить