详解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 相关文章推荐
如何将一个表单同时提交到两个地方处理
Oct 09 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
php存储过程调用实例代码
Feb 03 PHP
js和php邮箱地址验证的实现方法
Jan 09 PHP
destoon二次开发常用数据库操作
Jun 21 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
PHP生成条形码大揭秘
Sep 24 PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
php实现等比例压缩图片
Jul 26 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 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脚本数据库功能详解(下)
2006/10/09 PHP
php 代码优化之经典示例
2011/03/24 PHP
php实现求相对时间函数
2015/06/15 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
基于jQuery的js分页代码
2010/06/10 Javascript
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
Python 绘制酷炫的三维图步骤详解
2019/07/12 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
Python 操作 MySQL数据库
2020/09/18 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
工作中的自我评价如何写好
2013/10/28 职场文书
期中考试后的反思
2014/02/08 职场文书
葬礼司仪主持词
2014/03/31 职场文书
房屋出租协议书
2014/04/10 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
辞职书格式样本
2015/02/26 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书