详解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数组应用之比较两个时间的相减排序
Aug 18 PHP
php empty函数判断mysql表单是否为空
Apr 12 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
PHP在不同页面间传递Json数据示例代码
Jun 08 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
php设置静态内容缓存时间的方法
Dec 01 PHP
php站内搜索关键词变亮的实现方法
Dec 30 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
May 16 PHP
PHP中trait使用方法详细介绍
May 21 PHP
PHP实现用户登录的案例代码
May 10 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
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
JS随机密码生成算法
2019/09/23 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
如何写出好的Java代码
2014/04/25 面试题
服务中心夜班服务员岗位职责
2013/11/27 职场文书
物流仓管员工作职责
2014/01/06 职场文书
工作交流会欢迎词
2014/01/12 职场文书
端午节活动策划方案
2014/03/09 职场文书
放弃继承权公证书
2015/01/23 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers