2017 © Pedro Peláez
 

symfony-bundle vanio-testing-bundle

Symfony2 Bundle primarily helping you with integration testing.

image

vanio/vanio-testing-bundle

Symfony2 Bundle primarily helping you with integration testing.

  • Sunday, September 25, 2016
  • by maryo
  • Repository
  • 2 Watchers
  • 0 Stars
  • 0 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

Vanio Testing Bundle

Build Status Coverage Status PHP7 License, (*1)

A Symfony2 Bundle primarily helping you with integration testing., (*2)

Installation

Installation can be done as usually using composer. composer require vanio/vanio-testing-bundle, (*3)

In case of testing bundle configuration you need to extend prepared Vanio\TestingBundle\HttpKernel\TestKernel class. It provides you access to TestContainerBuilder you can use when testing bundle configurations. This kernel is also pre-configured for easier creation of standalone bundle's testing environment., (*4)

<?php
// AppKernel.php

use Vanio\TestingBundle\HttpKernel\TestKernel;

class AppKernel extends TestKernel
{}

The default implementation of TestKernel class expects you to create a file named Tests/Functional/app/{environment}/bundles.php relative to the kernel's root directory returning an array of the bundles to register. You can specify the environment later inside your test case., (*5)

<?php
// Tests/Functional/app/default/bundles.php

return [
    new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle,
    new Symfony\Bundle\FrameworkBundle\FrameworkBundle,
    new Vanio\TestingBundle\Tests\Functional\Bundle\TestBundle,
];

Similarly it expects you to create a configuration file named Tests/Functional/app/{environment}/config.yml where you can configure the bundles., (*6)

<?php
// Tests/Functional/app/default/config.yml

return [
    new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle,
    new Symfony\Bundle\FrameworkBundle\FrameworkBundle,
    new Vanio\TestingBundle\Tests\Functional\Bundle\TestBundle,
];

Otherwise you can register this bundle classically inside your AppKernel., (*7)

// app/AppKernel.php
// ...

class AppKernel extends Kernel
{
    // ...

    public function registerBundles(): array
    {
        // ...

        if ($this->environment === 'test') {
            $bundles[] = new Vanio\TestingBundle\VanioTestingBundle;
        }

        // ...
    }
}

The following examples are taken from actual tests of this bundle., (*8)

Testing Configuration of Bundle Extensions

// Tests/Functional/BundleConfigurationTest.php
// ...

use Vanio\TestingBundle\DependencyInjection\TestContainerBuilder;
use Vanio\TestingBundle\PhpUnit\KernelTestCase;

class ExtensionConfigurationTest extends KernelTestCase
{
    function test_extension_configuration()
    {
        self::boot();
        $this->assertInstanceOf(TestContainerBuilder::class, self::$container);
        $this->assertArraySubset(
            [
                'secret' => 'secret',
                'form' => ['enabled' => false],
                'profiler' => ['enabled' => false],
                'router' => ['enabled' => true],
            ],
            self::$container->processExtensionConfig('framework')
        );
    }
}

Testing of Page Rendering

// Tests/Functional/PageRenderingTest.php
// ...

use Symfony\Component\DomCrawler\Crawler;
use Symfony\Component\HttpFoundation\Response;
use Vanio\TestingBundle\PhpUnit\WebTestCase;

class PageRenderingTest extends WebTestCase
{
    function test_page_renders_successfully()
    {
        self::boot();
        $response = $this->request('GET', '/test');
        $this->assertInstanceOf(Response::class, $response);
        $this->assertSame(200, $response->getStatusCode());
        $this->assertHtmlContainsText(
            '
                HEADING
                Paragraph
                Link [/]
            ',
            $response->getContent()
        );
        $this->assertHtmlNotContainsText('foo', $response->getContent());
    }

    function test_crawling_page()
    {
        self::boot();
        $this->request('GET', '/test');
        $this->assertInstanceOf(Crawler::class, $this->crawler);
        $this->assertSame(1, $this->crawler->filter('html:contains("Heading")')->count());
    }
}

The Versions