Download the PHP package dab-libs/waesel-bundle without Composer
On this page you can find all versions of the php package dab-libs/waesel-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download dab-libs/waesel-bundle
More information about dab-libs/waesel-bundle
Files in dab-libs/waesel-bundle
Package waesel-bundle
Short Description Small library designed to simplify integration testing of Symfony applications
License MIT
Informations about the package waesel-bundle
Weasel
Weasel - is a small library designed to simplify integration testing of Symfony applications.
Installation
Install via Composer:
Usage
Suppose we want to test a pet search service by name or ID. This service implements the interface:
It finds pets by ID, by name, or both. It returns an array of found pets, or an empty array.
To test the FindPets service, we must first create the initial state of the database. To do this, we create a fixture class by implementing the Fixture interface:
The createData method of the Fixture interface is just designed to create the initial state of the database. It will be called automatically before running the test.
Let's make the fixture class a public service:
Now let's create a test case class by inheriting it from the DbTestCase class from the Weasel library:
Next we describe fields for the FindPets service and fixtures in this class. We mark them with the @RequiredForTest annotation. Now, the FindPets service and the fixture will be automatically requested from DI container and assigned to the appropriate fields before running a test. It will be done in the setUp method of the base class. Then the method createData of the fixture class will be called. And after that, the test method will be executed, and we can use the injected services.
Why Weasel
Symfony services in tests without Weasel
Almost all functionality of Symfony based applications is implemented as services. When testing, these services must be obtained from the DI container. Symfony developers advise doing it like this:
- initialize the Symfony kernel,
- get the DI container using the getContainer method of the KernelTestCase class,
- get the necessary services from the DI container.
Symfony services in tests using Weasel
Getting a service directly from a DI container is not a natural practice for the average Symfony programmer. We get services by injecting them through constructor parameters or through setters.
The Weasel library allows us to get services by simply describing them as fields in the test case class and annotating them with the @RequiredForTest annotation:
This saves the programmer from having to explicitly access the DI container and makes working with services simple and familiar. Now a programmer can focus on writing tests without being distracted by writing the same type of code to get services from the DI container.
Weasel classes
The Weasel library provides several base classes for writing integration and functional tests:
- KernelTestCase - for integration tests without using a database
- DbTestCase - for integration tests using a database
- WebTestCase - for functional tests without using a database
- WebDbTestCase - for functional tests using a database
All versions of waesel-bundle with dependencies
symfony/framework-bundle Version ^5.4
phpunit/phpunit Version ^9.5
symfony/phpunit-bridge Version ^5.4