Symfony + PhpUnit

1. Вам понадобится в файле composer.json добавить парочку зависимостей:

    "require-dev": {
        "symfony/phpunit-bridge": "~2.7",
        "phpunit/phpunit": "5.*"
    },

2. В корне проекта создайте файл phpunit.xml с приблизительно таким содержимым:

<?xml version="1.0" encoding="UTF-8"?>

<!-- https://phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.8/phpunit.xsd"
         backupGlobals="false"
         colors="true"
         bootstrap="app/autoload.php"
>
    <php>
        <ini name="error_reporting" value="-1"/>
        <server name="KERNEL_DIR" value="app/"/>
    </php>

    <testsuites>
        <testsuite name="Project Test Suite">
            <directory>tests</directory>
            <exclude>tests/oldTests</exclude>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist addUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">new/dir</directory>
        </whitelist>
    </filter>
</phpunit>

3. И как пример, создадим в директории api/service/anti_fraud файл теста AntiFraudServiceTest.php

<?php

namespace tests\api\service\anti_fraud;

use api\db\AntiFraudDBAccess;
use api\service\anti_fraud\AntiFraudService;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * @coversDefaultClass \api\service\anti_fraud\AntiFraudService
 */
class AntiFraudServiceTest extends KernelTestCase
{
    /**
     * @var AntiFraudService
     */
    private $AntiFraudService;

    /**
     * @var ContainerInterface
     */
    private $container;

    /**
     * @var \PHPUnit_Framework_MockObject_MockObject
     */
    private $antiFraudDBAccess;

    protected function setUp()
    {
        self::bootKernel();
        $this->container = self::$kernel->getContainer();
        $this->antiFraudDBAccess = $this->getMockBuilder(AntiFraudDBAccess::class)->disableOriginalConstructor()->getMock();
        $this->container->set('anti_fraud_db_access', $this->antiFraudDBAccess);
        $this->AntiFraudService = $this->container->get('anti_fraud_service');
    }

    /**
     * @dataProvider phoneProvider
     * @covers ::getPhoneStatus
     * @param $phone
     */
    public function testGetNewPhoneStatus($phone)
    {
        $this->antiFraudDBAccess->method('getPhone')->willReturn([]);
        $this->antiFraudDBAccess->method('addPhone')->willReturn(null);
        $status = $this->AntiFraudService->getPhoneStatus($phone);
        $this->assertEquals(AntiFraudService::VERIFIABLE, $status);
    }

    public function phoneProvider()
    {
        return [
            [79264215491],
            ['+79264215491'],
        ];
    }
}

4. Запускаем и получаем результат:

$ vendor/phpunit/phpunit/phpunit
PHPUnit 5.6.4 by Sebastian Bergmann and contributors.

....................................                              4 / 4 (100%)

Time: 2.54 seconds, Memory: 14.00MB

OK (4 tests, 4 assertions)

p.s. возможно Вам будет интересно узнать, как заинтегрировать PhpUnit с PhpStorm

Оцени публикацию:
  • 0,0
Оценили человек: 0

Похожие статьи:

Справочники и учебники:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Введите изображенные цифры:
Captcha
Главная
X

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2017 YaPro.Ru

Главная » Веб-мастеру » PHP »