详解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数据库连接时容易出错的特殊符号问题
Sep 01 PHP
仿AS3实现PHP 事件机制实现代码
Jan 27 PHP
php array的学习笔记
May 10 PHP
CodeIgniter启用缓存和清除缓存的方法
Jun 12 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
Jul 08 PHP
php实现约瑟夫问题的方法小结
Mar 23 PHP
PHP关联数组实现根据元素值删除元素的方法
Jun 26 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
PHP使用标准库spl实现的观察者模式示例
Aug 04 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
详解提高使用Java反射的效率方法
Apr 29 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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
Laravel 类和接口注入相关的代码
2019/10/15 PHP
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
JQuery跳出each循环的方法
2015/04/16 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
JavaScript输出所选择起始与结束日期的方法
2017/07/12 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
12条写出高质量JS代码的方法
2018/01/07 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
python进程管理工具supervisor使用实例
2014/09/17 Python
Python中实现参数类型检查的简单方法
2015/04/21 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
审计专业自荐信范文
2014/04/21 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
安全生产标语大全
2014/10/06 职场文书
2014年调度员工作总结
2014/11/19 职场文书
违纪学生保证书
2015/02/27 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
校长新学期寄语2016
2015/12/04 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏