详解Yaf框架PHPUnit集成测试方法


Posted in PHP onDecember 27, 2017

本文介绍了详解Yaf框架PHPUnit集成测试方法,分享给大家,具体如下:

测试目录

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);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php知道与问问的采集插件代码
Oct 12 PHP
php设计模式 Factory(工厂模式)
Jun 26 PHP
简单实用的.net DataTable导出Execl
Oct 28 PHP
php中get_object_vars()方法用法实例
Feb 08 PHP
PHP 魔术变量和魔术函数详解
Feb 25 PHP
php自定义分页类完整实例
Dec 25 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
PHP加密解密类实例代码
Jul 20 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 PHP
Laravel中使用Queue的最基本操作教程
Dec 27 #PHP
php获取ajax的headers方法与内容实例
Dec 27 #PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 #PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 #PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 #PHP
php-msf源码详解
Dec 25 #PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 #PHP
You might like
php 结果集的分页实现代码
2009/03/10 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
java、javascript实现附件下载示例
2014/08/14 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
python中logging库的使用总结
2017/10/18 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
python使用folium库绘制地图点击框
2018/09/21 Python
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
百度JavaScript笔试题
2015/01/15 面试题
领导证婚人证婚词
2014/01/13 职场文书
物流业务员岗位职责
2014/02/08 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
2014年管理工作总结
2014/11/22 职场文书
当幸福来敲门观后感
2015/06/01 职场文书