详解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在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
ThinkPHP实现批量删除数据的代码实例
Jul 02 PHP
PDO预处理语句PDOStatement对象使用总结
Nov 20 PHP
PHP+MySQL修改记录的方法
Jan 21 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
[原创]php逐行读取txt文件写入数组的方法
Jul 02 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
PHP获取当前文件的父目录方法汇总
Jul 21 PHP
PHP面向对象类型约束用法分析
Jun 12 PHP
深入分析PHP设计模式
Jun 15 PHP
PHP生成随机密码4种方法及性能对比
Dec 11 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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
python基础教程之Filter使用方法
2017/01/17 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
详解python的super()的作用和原理
2020/10/29 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
高中政治教学反思
2014/01/18 职场文书
店面销售职位的职责
2014/03/09 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
职位说明书范文
2014/05/07 职场文书
基层党员对照检查材料
2014/08/25 职场文书
车贷收入证明范本
2014/09/14 职场文书
信用卡工资证明范本
2014/10/17 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
逃课检讨书范文
2015/05/06 职场文书
MySQL分区路径子分区再分区
2022/04/13 MySQL