Download the PHP package mekras/symfony-bundle-testing without Composer

On this page you can find all versions of the php package mekras/symfony-bundle-testing. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package symfony-bundle-testing

Инструменты для тестирования пакетов Symfony

Эта библиотека предоставляет инструменты для автоматизированного тестирования пакетов (bundles) Symfony.

Оглавление

Установка

Требования

Установка через Composer

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

composer require --dev mekras/symfony-bundle-testing

Интеграционные тесты

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

Основной класс интеграционных тестов

Рекомендуется в каждом проекте создавать отдельный основной класс для всех классов ваших интеграционных тестов, как единую точку определения конфигурации тестов и добавления общих методов.

Этот класс должен быть унаследован от BaseSymfonyIntegrationTestCase.

Пример — tests/Integration/IntegrationTestCase.php:

Все классы интеграционных тестов должны наследоваться либо от этого класса, либо от BaseSymfonyIntegrationTestCase.

Определение имени главного класса вашего пакета

Важным элементом интеграционного тестирования пакета Symfony является знание его главного класса (*Bundle). За это отвечает метод BaseSymfonyIntegrationTestCase::getBundleClass(). Если вы следуете соглашениям по именованию пакетов, то getBundleClass() должен правильно определять и возвращать имя класса. Если же он этого не делает, можете переопределить его в своём IntegrationTestCase:

Написание тестов

Костяк теста выглядит так:

Как правило, вначале надо создать контейнер зависимостей, т. к. почти вся интеграция с Symfony ведётся через него. Метод $this->createContainer() создаёт тестовый контейнер (он подробно описан ниже), который будет являться основной ваших тестов.

Контейнер создаётся с минимально необходимой предварительной конфигурацией:

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

Далее контейнер необходимо скомпилировать, чтобы привести его в состояние, соответствующее времени выполнения приложения. Это делается методом $container->compile().

После компиляции можно выполнить нужные действия по проверке получившегося контейнера.

Ниже эти вопросы будут рассмотрены подробнее.

Тестовый контейнер зависимостей

Сердцем интеграционных тестов является контейнер зависимостей, позволяющий проверить правильность регистрации в нём расширений вашего пакета, взаимодействие с ядром Symfony и/или другими пакетами.

Для создания тестового контейнера используйте метод BaseSymfonyIntegrationTestCase::createContainer:

Метод создаст и вернёт новый экземпляр класса TestContainerBuilder, расширяющего стандартный ContainerBuilder Symfony описанными ниже возможностями.

В одном тесте можно создать несколько независимых контейнеров.

Загрузка расширений контейнера зависимостей

Метод предназначен для тестирования расширений контейнера зависимостей Symfony и позволяет проверить, правильно ли эти расширения загружаются, правильно ли настраивают контейнер.

Загрузка в контейнер зависимостей других пакетов

Как проверить, что в контейнере есть нужна служба?

Предположим, ваш пакет должен зарегистрировать в контейнере службы с идентификаторами some.service.id и щерук.service.id. Проверить, что это действительно делается, можно так:

Как получить службу из контейнера?

Публичные службы можно получить обычным способом — через метод Container::get():

Приватные службы можно получать через локатор или сделать публичными.

Получение через локатор:

Сделать публичной:

Как добавить другие пакеты в контейнер?

Если вы хотите протестировать интеграцию с другими пакетами, их можно добавить в тестовый контейнер с помощью метода BaseSymfonyIntegrationTestCase::getBundleClass().

Для одного теста это можно сделать непосредственно в нём между созданием и компиляцией контейнера:

Если это нужно для всех ваших тестов, то рекомендуется переопределить метод createContainer в основном классе:

Так же есть возможность сразу задать список пакетов, которые надо загружать, переопределив метод getRequiredBundles():

Как устранить ошибку «service or alias has been removed or inlined»?

Если при извлечении из тестового контейнера вы столкнулись с такой ошибкой:

The "foo" service or alias has been removed or inlined when the container was compiled. You should either make it public, or stop using the container directly and use dependency injection instead.

то решить её можно сделав эту службу публичной, указав её в аргументе $public метода createContainer():


All versions of symfony-bundle-testing with dependencies

PHP Build Version
Package Version
Requires php Version ^7.4|^8.0
nyholm/psr7 Version ^1.5
symfony/browser-kit Version ^5.4|^6.0|^7.0
symfony/framework-bundle Version ^5.4|^6.0|^7.0
symfony/yaml Version ^5.3|^6.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package mekras/symfony-bundle-testing contains the following files

Loading the files please wait ....