详解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 无限级数据JSON格式及JS解析
Jul 17 PHP
php的list()的一步操作给一组变量进行赋值的使用
May 18 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
Jul 22 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
Symfony核心类概述
Mar 17 PHP
PHP微信开发之有道翻译
Jun 23 PHP
详解PHP中websocket的使用方法
Sep 15 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
laravel ajax curd 搜索登录判断功能的实现
Apr 17 PHP
浅谈Laravel中使用Slack进行异常通知
May 29 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 和 HTML
2006/10/09 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
2016/11/05 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
Nodejs监听日志文件的变化的过程解析
2019/08/04 NodeJs
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
深入理解javascript中的this
2021/02/08 Javascript
Python基于time模块求程序运行时间的方法
2017/09/18 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
PyQt5实现登录页面
2020/05/30 Python
python如何控制进程或者线程的个数
2020/10/16 Python
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
求职信模版
2013/11/30 职场文书
后勤工作职责
2013/12/22 职场文书
创业计划书怎样才能打动风投
2014/01/01 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
2015年党员承诺书
2015/01/21 职场文书
微信搭讪开场白
2015/05/28 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python