VamShop 3 — Автоматизированное тестирование PHPUnit

VamShop 3 построен на базе CakePHP 3.x, соответственно, есть встроенная поддержка автоматизированного тестирования PHPUnit.

Всё сделано в соответствии с официальной документацией, доступной по адресу — https://book.cakephp.org/3.0/en/development/testing.html

По умолчанию в VamShop 3 уже написаны тесты для некоторых Core модулей.

Данная статья будет пополняться постепенно.

В данной заметке расскажу как запустить автоматизированное тестирование.

Будем считать, что у Вас установлен VamShop 3.

Тестирование надо проводить при включённом режиме отладки, т.е. в файле config/app.php поменяйте:

filter_var(env(’DEBUG’, false)

на:

filter_var(env(’DEBUG’, true)

Теперь нужно установить пакет phpunit.

В корневой папке магазина выполните команду:

composer require phpunit/phpunit:”^6.0″

PHPUnit не должен быть самой свежей 7 версии, PHPUnit 7 версии не поддерживается в CakePHP 3.x на данный момент.

Затем надо настроить базу данных, которая будет использоваться для тестирования.

В /config/app.php есть такой блок:

        /**
         * The test connection is used during the test suite.
         */
        ‘test’ => [
            'className' => 'CakeDatabaseConnection',
            'driver' => 'CakeDatabaseDriverMysql',
            'persistent' => false,
            'host' => 'localhost',
            //'port' => 'non_standard_port_number',
            'username' => 'my_app',
            'password' => 'secret',
            'database' => 'test_myapp',
            'encoding' => 'utf8mb4',
            'timezone' => 'UTC',
            'cacheMetadata' => true,
            'quoteIdentifiers' => false,
            'log' => false,
            //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
            ‘url’ => env(’DATABASE_TEST_URL’, null),
        ],

Это как раз база для тестирования.

Если у Вас не рабочая копия сайта, то можно просто прописать сюда основной доступ.

В этом же файле чуть выше найдите основную используемую базу данных, default подключение:

        ‘default’ => [
            'className' => 'CakeDatabaseConnection',
            'driver' => 'CakeDatabaseDriverMysql',
            'persistent' => false,
            'host' => 'localhost',
            /**
             * CakePHP will use the default DB port based on the driver selected
             * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
             * the following line and set the port accordingly
             */
            //'port' => 'non_standard_port_number',
            'username' => 'root',
            'password' => 'XXXXXX',
            'database' => 'vamshop3',
            'encoding' => 'utf8mb4',
            'timezone' => 'UTC',
            'flags' => [],
            ‘cacheMetadata’ => true,
            ‘log’ => false,

И просто возьмите отсюда данные логин, пароль, название базы дадыннх и скопируйте их в тестовую базу.

Пропишите:

        /**
         * The test connection is used during the test suite.
         */
        ‘test’ => [
            'className' => 'CakeDatabaseConnection',
            'driver' => 'CakeDatabaseDriverMysql',
            'persistent' => false,
            'host' => 'localhost',
            //'port' => 'non_standard_port_number',
            'username' => 'root',
            'password' => 'XXXXXX',
            'database' => 'vamshop3',
            'encoding' => 'utf8mb4',
            'timezone' => 'UTC',
            'cacheMetadata' => true,
            'quoteIdentifiers' => false,
            'log' => false,
            //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
            ‘url’ => env(’DATABASE_TEST_URL’, null),
        ],

Для тестов Вы будете использовать свою же базу данных по умолчанию.

Но на всякий случай конечно лучше проводить тесты не на основной базе, а на клоне.

Сделайте резервную копию Вашей базы данных, например vamshop3-test

С помощью phpMyAdmin или через консоль загрузите все данные в базу vamshop3-test

У Вас будет две одинаковые базы данных: основная vamshop3 и база для тестов: vamshop3-test 

Related posts:

  1. VamShop 3 — Travis CI Данная заметка — продолжение прошлой статьи про PHPunit — ...
  2. Новые статьи на форуме — Vamshop 3 Но форуме тех. поддержки пользователей https://forum.vamshop.ru Будут постепенно выкладываться...
  3. Бесплатный магазин на React + NodeJs + MongoDB! Посмотрите демку: https://cezerin.ru — магазин. https://cezerin.ru/admin — админка. Как...

Comments are closed.