Skip to content

tandrus/sf-functional-test

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Symfony Functional Test

Install

$ composer require php-solution/sf-functional-test

Load environment variables from files

Add to your phpunit.xml extension and configure paths (comma separated relative file paths from your phpunit.xml configuration file):

<bootstrap class="PhpSolution\FunctionalTest\PhpUnit\Extension\PreRunEnvLoaderExtension">
    <parameter name="paths" value="../.env,.env"/>
</bootstrap>

Load Doctrine fixtures before test cases

Add to your phpunit.xml extension:

<bootstrap class="PhpSolution\FunctionalTest\PhpUnit\Extension\PreRunCommandLauncherExtension">
     <parameter name="command" value="functional-test:fixtures:load"/>
    <!--Default is false. If true, if command's exit code > 0 then tests will fail immediately-->
    <parameter name="exitOnError" value="true" />
</bootstrap>

Run Doctrine migrations before test cases

Add to your phpunit.xml extension:

<bootstrap class="\PhpSolution\FunctionalTest\PhpUnit\Extension\DoctrineMigrationExtension" />

Or simply:

<bootstrap class="PhpSolution\FunctionalTest\PhpUnit\Extension\PreRunCommandLauncherExtension">
    <parameter name="command" value="doctrine:migration:migrate --no-interaction"/>
    <parameter name="exitOnError" value="true" />
</bootstrap>

Run sf command with parameters

Add to your phpunit.xml extension:

<bootstrap class="PhpSolution\FunctionalTest\PhpUnit\Extension\PreRunCommandLauncherExtension">
    <parameter name="command" value="doctrine:mongodb:schema:drop --collection"/>
</bootstrap>

Run native command with parameters

Add to your phpunit.xml extension:

<bootstrap class="PhpSolution\FunctionalTest\PhpUnit\Extension\PreRunNativeCommandLauncherExtension">
    <parameter name="command" value="bin/console doctrine:mongodb:schema:drop --collection"/>
</bootstrap>

Using Test case additional functionallity PhpSolution\FunctionalTest\TestCase\AppTestCase

Using Authorization:

  1. Add to your config_test.yml:
security:
    firewalls:
        your_secured_category:
            http_basic: ~
  1. Use on TestCase
$client = $this->getAuthorizedClient('user_login', 'password');

Work with Doctrine (ORM, ODM)

  1. Add EntityTrait or DocumentTrait to your TestCase
$this->getDoctrine()
  1. Find Entity helper method:
protected function findEntity(string $entityClass, string $orderBy = 'id', array $findBy = [])
protected function findDocument(string $documentClass, array $criteria = [])
protected function findDocuments(string $documentClass, array $criteria = [], array $orderBy = [])
  1. Refresh Entity:
protected function refreshEntity($entity) 
protected function refreshDocument($document)

Test emails

  1. Add config
swiftmailer:
    disable_delivery: true
    spool:
        type: file
        path: '%kernel.project_dir%/var/spool'
    delivery_addresses: ~
  1. Add SpoolTrait and find methods
public function purgeSpool()
public function getSpooledEmails()
public function getEmailContent($file)
protected function getSpoolDir()

Example of correct project structure:

See correct project structure and configs for functional tests on link

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%