详解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 header函数分析详解
Aug 06 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
关于PHP语言构造器介绍
Jul 08 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
PHP如何使用Memcached
Apr 05 PHP
PHP实现适用于文件内容操作的分页类
Jun 15 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
php实现基于PDO的预处理示例
Mar 28 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 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
模板引擎正则表达式调试小技巧
2011/07/20 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
2019/04/04 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
Python简单操作sqlite3的方法示例
2017/03/22 Python
Python中一行和多行import模块问题
2018/04/01 Python
在Python中定义一个常量的方法
2018/11/10 Python
python实现堆排序的实例讲解
2020/02/21 Python
python实现图像拼接功能
2020/03/23 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
社会学专业求职信
2014/02/24 职场文书
工厂采购员岗位职责
2014/04/08 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
德劲DE1105机评
2022/04/05 无线电
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技