Yaf框架PHPUnit集成测试方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/q601115211/article/details/78900463

测试目录

test
├── TestCase.php
├── bootstrap.php
├── controller
│   ├── BaseControllerTest.php
│   └── IndexControllerTest.php
├── model
├── phpunit.xml
└── service
    └── TokenServiceTest.php

phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.2/phpunit.xsd"
          extensionsDirectory="dbunit.phar" bootstrap="./bootstrap.php">
</phpunit>

bootstrap.php 测试框架入口文件

define("APP_PATH", realpath(dirname(__FILE__) . '/../'));
date_default_timezone_set("Asia/Shanghai");
define("TEST_DIR", __DIR__);

TestCase.php 测试文件基础类

namespace test;

use PHPUnit\Framework\TestCase as Test;
use Yaf\Application;

class TestCase extends Test
{
    protected static $_application = null;


    protected function setUp()
    {
        self::$_application = $this->getApplication();
        parent::setUp();
    }

    public function testAppPath()
    {
        $this->assertEquals('/Users/xiong/Sites/kyYaf', APP_PATH);
    }

    public function testApp()
    {
        $this->assertEquals(Application::app(), self::$_application);
    }

    public function testApplication()
    {
        $this->assertNotNull(self::$_application);
    }

    public function getApplication()
    {

        if (self::$_application == null) {
            $this->setApplication();
        }
        return self::$_application;
    }

    public function setApplication()
    {
        $application = new Application(APP_PATH . '/conf/application.ini');
        $application->bootstrap();
        self::$_application = $application;
    }
}

TokenServiceTest.php service类例子

namespace Service;

use test\TestCase;
include TEST_DIR . '/TestCase.php';
include APP_PATH . '/application/library/Service/BaseService.php';
include APP_PATH . '/application/library/Service/TokenService.php';

class TokenServiceTest extends TestCase
{

    /**
     * @var TokenService
     */
    protected static $tokenService;
    public function setUp()
    {
        self::$tokenService = TokenService::getInstance();
        parent::setUp();
    }

    public function testCreateToken()
    {
        $token = self::$tokenService->createToken('22');
        $this->assertInternalType('array', $token);
        $this->assertInternalType('string', $token['token']);
    }

}

BaseControllerTest.php controller类例子

namespace test\controller;

include TEST_DIR .'/TestCase.php';

use test\TestCase;

class BaseControllerTest extends TestCase
{
    public function testGetConfigAction()
    {
        $request = new Simple('CLI', '', 'Index', 'getConfig');
        $response = self::$_application->getDispatcher()->returnResponse(true)->dispatch($request);
        $contents = $response->getBody();
        $data = json_decode($contents, true);
        $this->assertInternalType('array', $data);
    }
}

猜你喜欢

转载自blog.csdn.net/q601115211/article/details/78900463