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><filter><whitelist addUncoveredFilesFromWhitelist="true"><directory suffix=".php">tests</directory>
<exclude>tests/oldTests</exclude></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