详解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写的采集程序
Mar 16 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
php中使用session防止用户非法登录后台的方法
Jan 27 PHP
php字符串按照单词进行反转的方法
Mar 14 PHP
PHP未登录自动跳转到登录页面
Dec 21 PHP
PHP从尾到头打印链表实例讲解
Sep 27 PHP
PHP赋值的内部是如何跑的详解
Jan 13 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
Aug 09 PHP
有关PHP 中 config.m4 的探索
Aug 26 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.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
js html实现计算器功能
2018/11/13 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
Cpy和Python的效率对比
2015/03/20 Python
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
Python必须了解的35个关键词
2020/07/16 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
开业庆典邀请函
2014/01/08 职场文书
学校创先争优活动总结
2014/08/28 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
毕业设计致谢词
2015/05/14 职场文书
采购员工作总结范文
2015/08/12 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL