2017 © Pedro Peláez
 

library phest

Phest = Phalcon + Test

image

cosma/phest

Phest = Phalcon + Test

  • Monday, September 19, 2016
  • by cosma
  • Repository
  • 1 Watchers
  • 2 Stars
  • 18 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

Phest

Circle CI, (*1)

Phalcon + Test = Phest. A test library for Phalcon Framework., (*2)

Table of Contents

Installation

1. Add Phest to composer.json

    $   php composer.phar require cosma/phest '0.0.*'

Follow the 'dev-master' branch for latest dev version. I recommend to use more stable version tags if available., (*3)

2. Add a bootstrap.php file to Phalcon project tests directory

# /path/to/phalcon/project/tests/bootstrap.php

 /**
 * Define TEST_PATH to point to path/to/phalcon/project/tests/
 */
define('TEST_PATH', __DIR__ );

/**
 * Require Phest environment.php file
 */
require_once '/path/to/vendor/cosma/phest/src/environment.php';

/**
 * Get your application from your phalcon project
 */    
/** @var \Phalcon\Mvc\Micro|\Phalcon\Mvc\Application $app */
$app = require_once __DIR__ . '/../src/init.php';


 /**
 * Require Phest library bootstrap.php file
 */
require_once '/path/to/vendor/cosma/phest/src/bootstrap.php';

An example for bootstrap.php, (*4)

3. Add to phpunit configuration XML the bootstrap file



<phpunit  .....
         bootstrap="path/tophalcon/project/bootstrap.php"
         .....
        >
    ........
</phpunit>

An example for phpunit.xml, (*5)

Optionally, you can add a config.php that is merged with you Phalcon project configs

# /path/to/phalcon/project/tests/config.php

return new \Phalcon\Config([
    'someConfigVariable' => 'some value',
]);

An example for config.php, (*6)

Dependencies

This test library is intended for projects using Phalcon Framework version version 2.9. Therefore, PHP extension 2.0.13 must be installed. Phalcon Extension, (*7)

Test Cases

Supports the following Test Cases:, (*8)

Unit Test Case

This case is used for unit testing is an extension of PHPUnit_Framework_TestCase:, (*9)

use Cosma\Phest\TestCase\UnitTestCase;

class SomeVerySimpleUnitTest extends UnitTestCase
{
    public function testSomething()
    {
        $additionClass = new AdditionCLass();

        $this->assertEquals(3, $additionClass->calculate(1, 2)); 
    }
}

Web Test Case

This case is used for functional and controller tests and has the following methods:, (*10)

  • mockService ($serviceName, $mock)
  • sendRequest ($url = '', $requestMethod = 'GET', $parameters = [], $headers = [])
use Cosma\Phest\TestCase\WebTestCase;

class SomeWebFunctionalTest extends WebTestCase
{
    public function setUp()
    {
        /**
        * Required call
        */
        parent::setUp();

        $db = $this->getMockBuilder('Phalcon\Db\Adapter\Pdo\Mysql')
            ->disableOriginalConstructor()
            ->setMethods(['query'])
            ->getMock();
        $this->mockService('db', $db);

    }

    public function testSomething()
    {
        /** @var \Phalcon\Http\Response $response */
        $response = $this->sendRequest(
            '/test_endpoint', 'POST', ['test_var' => 'value'], ['Header1' => 223456789, 'Header2' => 'value2']);

        $this->assertInstanceOf('Phalcon\Http\Response', $response);

        $this->assertEquals('200 OK', $response->getStatusCode());
        $this->assertEquals('value', $response->getContent());

    }

    public function testGetHealthCheck()
    {
        /** @var \Phalcon\Http\Response $response */
        $response = $this->sendRequest(
            '/healthCheck', 'GET', [], []);

        $this->assertInstanceOf('Phalcon\Http\Response', $response);

        $this->assertEquals('200 OK', $response->getStatusCode());
    }
}

Retry Tests

Use the @retry annotation for a Class or Method to retry tests in case of failure. Method annotations are overwriting Class annotation., (*11)

use Cosma\Phest\TestCase\UnitTestCase;

/**
* Will retry 10 times all the Class tests that are failing
*
* @retry 10 
*/ 
class SomeVerySimpleUnitTest extends UnitTestCase
{
    /**
    * Will retry 10 times this test if is failing because of the class annotation from above
    */
    public function testFirst()
    {
        // ...
    }

    /**
    * Will retry 4 times this test if is failing because of the method annotation from below
    *
    * @retry 4 
    */
    public function testSecond()
    {
        // ...
    }
}

Mockery

Mockery is a simple yet flexible PHP mock object framework for use in unit testing, (*12)

use Cosma\Phest\TestCase\UnitTestCase;

class SomeUnitTest extends UnitTestCase
{
    public function testGetsAverageTemperatureFromThreeServiceReadings()
    {
        $service = \Mockery::mock('service');
        $service->shouldReceive('readTemp')->times(3)->andReturn(10, 12, 14);

        $temperature = new Temperature($service);

        $this->assertEquals(12, $temperature->average());
    }
}    

Run Tests

vendor/bin/phpunit -c phpunit.xml --coverage-text --coverage-html=tests/coverage tests, (*13)

License

The bundle is licensed under MIT., (*14)

The Versions

19/09 2016

dev-master

9999999-dev https://github.com/cosma/phest

Phest = Phalcon + Test

  Sources   Download

MIT

The Requires

 

The Development Requires

phpunit phalcon unit test functional test

15/09 2016

0.0.3

0.0.3.0 https://github.com/cosma/phest

Phest = Phalcon + Test

  Sources   Download

MIT

The Requires

 

The Development Requires

phpunit phalcon unit test functional test

15/09 2016

0.0.2

0.0.2.0 https://github.com/cosma/phest

Phest = Phalcon + Test

  Sources   Download

MIT

The Requires

 

The Development Requires

phpunit phalcon unit test functional test

15/09 2016

0.0.1

0.0.1.0 https://github.com/cosma/phest

Phest = Phalcon + Test

  Sources   Download

MIT

The Requires

 

The Development Requires

phpunit phalcon unit test functional test