详解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 相关文章推荐
在IIS上安装PHP4.0正式版
Oct 09 PHP
对squid中refresh_pattern的一些理解和建议
Apr 17 PHP
php下正则来匹配dede模板标签的代码
Aug 21 PHP
PHP中__get()和__set()的用法实例详解
Jun 04 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
PHP 读取和编写 XML
Nov 19 PHP
PHP缓存集成库phpFastCache用法
Dec 15 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
Apr 26 PHP
PDO::beginTransaction讲解
Jan 27 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
Oct 30 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 PHP
php array_map()函数实例用法
Mar 03 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
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
PHP内核探索:变量概述
2014/01/30 PHP
PHP crc32()函数讲解
2019/02/14 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
网上应用的一个不错common.js脚本
2007/08/08 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
webpack4.x CommonJS模块化浅析
2018/11/09 Javascript
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
用python实现刷点击率的示例代码
2019/02/21 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
会计工作心得体会
2014/01/13 职场文书
体育运动口号
2014/06/09 职场文书
计划生育宣传标语
2014/06/21 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python