yaf + phpunit

使用phpunit对yaf进行测试的核心在于bootstrip文件的配置。

*1. 首先在项目目录下创建tests文件,并在tests中创建phpunit.xml

<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
colors="true"
syntaxCheck="true" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/5.7/phpunit.xsd" bootstrap="./bootstrap.php"
> <testsuites>
<testsuite name="controller">
<directory>./application/controllers/*Test.php</directory>
</testsuite>
<testsuite name="models">
<directory>./application/models/*Test.php</directory>
</testsuite>
</testsuites>
<logging>
<log type="coverage-html" target="./report" charset="UTF-8"/>
</logging>
</phpunit>

*2. 然后就是编写phpunit的bootstrap,新增bootstrap.php文件中,在其中增加即可

<?php
define("APP_PATH", realpath(dirname(__FILE__) . '/../'));

*3. 根据需要创建相应的目录。我创建的目录为

```

|-- application

| |-- BaseCase.php

| |-- controllers

| | -- EmailTest.php | -- models

|-- bootstrap.php

|-- phpunit.xml

```

*4. 在application/controllers/中创建EmailTest.php文件,这就是controller测试文件; 在application/models/ 中创建model文件,进行model数据测试。

*5. BaseCase.php是一个父类,在这个类中做的功能有两部分

    1. yaf项目中bootstrip文件配置的加载,其实就类似于复制一份项目中bootstrip的一些方法,放到此处,比如config配置,路由等;
2. 普通的一些方法,比如get、post请求。
``` ```php
<?php use PHPUnit\Framework\TestCase;
use Illuminate\Database\Capsule\Manager as Capsule; class BaseCase extends TestCase
{ public $application; public function __construct(){ parent::__construct(); $this->_init();
}
/**
* init
*/
public function _init()
{
if (!Yaf_Registry::get('config')) { $this->application = new Yaf_Application(APP_PATH . "/conf/application.ini");
$config = Yaf_Application::app()->getConfig(); Yaf_Registry::set('config',$config);
echo "\n当前环境:" . Yaf_Application::app()->getConfig()->env. "\n"; $this->_loader(); $this->_iniDatabase(); // disableView
Yaf_dispatcher::getInstance()->disableView(); }
}
/**
* loader
*/
public function _loader()
{
Yaf_Loader::import(APP_PATH . "/application/function.php"); Yaf_Loader::import(APP_PATH . "/vendor/autoload.php");
} /**
* GET 请求
*/
public function getRequest($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 200);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
return $data;
} /**
* POST 请求
*/
public function postRequest($url, $params)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 200);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$data = curl_exec($ch);
curl_close($ch);
return $data;
} }
```
*6. controllers和models中的文件可以加载文件,做文件映射,进行正常操作访问请求了。
models中的操作
<?php
require_once APP_PATH . "/tests/application/BaseCase.php"; class BlogTest extends BaseCase
{
public function __construct()
{
parent::__construct(); $this->_model = new BlogModel();
$this->_audit_model = new AuditModel();
} public function test_getAuditLists()
{
$data = $this->_audit_model->getAuditLists();
$this->assertNotEmpty($data);
}
}
    controllers中的操作,其实就是get、post请求了,没什么不同的。因为controllers测试,只能是post、get请求,所以只能是测试Action方法,里面的非Action结束的方法,是不能进行测试的。只能打日志进行记录,查看执行结果。

*7. 到此结束。

使用phpunit测试yaf项目操作步骤的更多相关文章

  1. monkey测试 -- 原理和操作步骤

     Monkey测试原理: Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序 ...

  2. Git:上传GitHub项目操作步骤

    git教程:git详解.gitbook #首次上传步骤 首先在工程文件位置处右键git bash here 本地创建ssh key $ ssh-keygen -t rsa -C "your_ ...

  3. 将项目Demo上传到Github上的操作步骤

    之前我有很多代码直接上传到了CSDN上,主要是因为操作方便,今天我就说说将源码Demo上传到Github上的操作步骤. 首先,你要先确定自己在Github上有自己的账户名,账户邮箱和密码.如果没有可以 ...

  4. 版本控制之五:SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤(转)

    使用场景: 假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发.测试并已经上线了,接下来接到新的需求,新需求的开发需要修改多个文件中的代码,当需求已经开始开发一段时间的时 ...

  5. SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤

    使用场景: 假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发.测试并已经上线了,接下来接到新的需求,新需求的开发需要修改多个文件中的代码,当需求已经开始开发一段时间的时 ...

  6. monkey测试入门2--测试步骤、常用参数、常规monkey命令

    <凤栖梧> 柳永 伫倚危楼风细细,望极春愁,黯然生天际.草色烟光残照里,无言谁会凭栏意? 拟把疏狂图一醉,对酒当歌,强乐还无味,衣带渐宽终不悔,为伊消得人憔悴. 简要步骤:adb devi ...

  7. Springboot集成Swagger操作步骤

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  8. vue-cli项目创建步骤

    vue-cli项目创建步骤: 1.cmd打开命令行窗口 2.输入cnpm install vue-cli -g,然后回车等待(想在哪个目录建立vue项目就要在进入到对应目录再输入命令) 3.安装结束后 ...

  9. ABP创建数据库操作步骤

    1 ABP创建数据库操作步骤 1.1 SimpleTaskSystem.Web项目中的Web.config文件修改数据库配置. <add name="Default" pro ...

随机推荐

  1. 说一下syslog日志吧~~~

    # -*- coding:utf-8 -*-from logging.handlers import *import loggingimport logging.handlers class MySo ...

  2. Ubuntu 16.04 上安装 MySQL 5.7 教程

    介绍 MySQL 是一种开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装.它使用关系数据库和SQL(结构化查询 ...

  3. DeepCTR专题:DeepFM论文学习和实现及感悟

    论文地址:https://arxiv.org/pdf/1703.04247.pdf CTR预估我们知道在比较多的应用场景下都有使用.如:搜索排序.推荐系统等都有广泛的应用.并且CTR具有极其重要的 地 ...

  4. linux下ftp权限控制

    需求背景: 1.创建2个账号给联调的系统使用读取我方服务器提供的文件信息.只允许看到限定的目录,对目录下的文件只有只读权限,禁止shell登录. 2.创建一个内部账号提供文件信息,只允许看到限定的目录 ...

  5. pytorch 读数据接口 制作数据集 data.dataset

    [吐槽] 啊,代码,你这个大猪蹄子 自己写了cifar10的数据接口,跟官方接口load的数据一样, 沾沾自喜,以为自己会写数据接口了 几天之后,突然想,自己的代码为啥有点慢呢,这数据集不大啊 用了官 ...

  6. 一个简单的java程序,用于RabbitMQ日志监控

    RabbitMQ的所有日志,都会发给topic类型的exchange “amq.rabbitmq.log”  routingKey 有 debug,info,waring,error.  如果接收所有 ...

  7. javaEE练习(商城练习)

    今天写一个商城的练习,综合之前学习过的servlet和el表达式,来一个综合的练习: 需要用到的数据库有: /* Navicat MySQL Data Transfer Source Server : ...

  8. mysql字段默认值不生效的问题解决(上)

    在项目中使用mybatis做为持久层框架,mysql数据库.项目上线前,DBA要求我们将每张数据库表中的字段都设置默认值和not null.之前项目中有一些insert语句是将表中所有字段都列出来,然 ...

  9. C语言---指针变量作为函数参数

    在C语言中,函数的参数不仅可以是整数.小数.字符等具体的数据,还可以是指向它们的指针.用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着 ...

  10. 西部数码虚拟空间配置ssl

    1.在阿里云申请ssl证书 2.解析到西部数码cname地址 3.西部数码---> 申请ssl部署 4.申请托管证书 5.部署https后设置301跳转将http跳转到https  参照: ht ...