详解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.NET的入门教程
Oct 09 PHP
php绝对路径与相对路径之间关系的的分析
Mar 03 PHP
仿AS3实现PHP 事件机制实现代码
Jan 27 PHP
php使用GeoIP库实例
Jun 27 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
Jun 13 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
PHP上传图片、删除图片简单实例
Nov 12 PHP
浅谈php中变量的数据类型判断函数
Mar 04 PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 PHP
Thinkphp5+uploadify实现的文件上传功能示例
May 26 PHP
PHP实现的DES加密解密类定义与用法示例
Nov 02 PHP
php实现文章评论系统
Feb 18 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写MySQL数据 实现代码
2009/06/15 PHP
黑夜路人出的几道php笔试题
2009/08/04 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
基于python socketserver框架全面解析
2017/09/21 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
python 实现逻辑回归
2020/12/30 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
党支部2014年度工作总结
2014/12/04 职场文书
教师辞职信范文
2015/02/28 职场文书
公司的力量观后感
2015/06/05 职场文书
大学生见习总结报告
2015/06/24 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
2016年领导干部廉政承诺书
2016/03/24 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA