详解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基础知识:类与对象(5) static
Dec 13 PHP
PHP之变量、常量学习笔记
Mar 27 PHP
Excel数据导入Mysql数据库的实现代码
Jun 05 PHP
PHP删除特定数组内容并且重建数组索引的方法.
Mar 25 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
Mar 26 PHP
如何使用微信公众平台开发模式实现多客服
Jan 06 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
Apr 10 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 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中常用字符串处理代码片段整理
2011/11/07 PHP
php图片上传类 附调用方法
2016/05/15 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
一个简单的javascript类定义例子
2009/09/12 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
Python批量更改文件名的实现方法
2017/10/29 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
新闻专业个人求职信
2013/12/19 职场文书
医院实习介绍信
2014/01/12 职场文书
董事长秘书职责
2014/01/31 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
五年级学生期末评语
2014/12/26 职场文书
2015新学期家长寄语
2015/02/26 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
个人业务学习心得体会
2016/01/25 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫