麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

PHPUnit單元測試YAF控制層

2020-03-22 20:09:46
字體:
來源:轉載
供稿:網友
  • 在Yaf應用中,創建一個控制層UserController:

    <?phpClass UserController extends Yaf_Controller_Abstract {    // init方法相當于控制器的初始化函數,取消自動渲染視圖    html' target='_blank'>public function init() {        Yaf_dispatcher::getInstance()->disableView();    }    // 輸出需要的JSON信息    private function __responseJson($code=0, $data=FALSE) {        $response = json_encode(array('code'=>$code, 'data'=>$data));        $this->getResponse()->setBody($response);    }    // JSON Action    public function jsonAction($uid=0) {        if ( $uid < 1 ) return $this->__responseJson(-1);         $user_model = new UserModel();        $row = $user_model->fetchRowById($uid);        return $this->__responseJson(0, $row);    }}
    測試控制器是一個相對比較不容易理解的過程,由于控制器本身可能存在輸出一段JSON后Exit的過程,會導致Response出來的數據無法別測試用例獲取。這里就需要YAF兩個特殊的方式來操作:1. 輸出的時候需要用到Yaf_Response_Abstract的方法。該方法同時可以在Yaf_Dispatchar調度器中通過設置returnResponse控制是否輸出數據,因此我們之前在User控制器中使用:$this->getResponse()->setBody($response);2. YAF本身允許在CLI模式執行,我們可以通過YAF_Request_Sample創建一個簡單請求,創建request.php<?php$request = new Yaf_Request_Simple();print_r($request);如我們在命令行下執行request.php,可以看到如下結果:

    基于以上兩點,為此我們來創建一個測試用例:UserControllerTest.php 該文件僅用于測試UserController的業務。


    <?phpdefine('APP_PATH', dirname(__FILE__) . '/../../');define('APP_ENV', 'loc');error_reporting(E_ERROR | E_PARSE); Class UserControllerTest extends PHPUnit_Framework_TestCase {     private $__application = NULL;        // 初始化實例化YAF應用,YAF application只能實例化一次    public function __construct() {        if ( ! $this->__application = Yaf_Registry::get('Application') ) {            $this->__application = new Yaf_Application(APP_PATH."/config/application.ini", APP_ENV);            Yaf_Registry::set('Application', $this->__application);        }    }     // 創建一個簡單請求,并利用調度器接受Repsonse信息,指定分發請求。    private function __requestActionAndParseBody($action, $params=array()) {        $request = new Yaf_Request_Simple("CLI", "Index", "User", $action, $params);        $response = $this->__application->getDispatcher()            ->returnResponse(TRUE)            ->dispatch($request);        return $response->getBody();    }     // 測試 JsonAction UID存在    public function testJsonUid1Action() {        $response = $this->__requestActionAndParseBody('Json', array('uid'=>1));        $data     = json_decode($response, TRUE);        $this->assertInternalType('array', $data);        $this->assertEquals('0', $data['code']);        $this->assertInternalType('string', $data['data']['username']);        $this->assertRegExp('/^/d+$/', $data['data']['groupid']);        $this->assertRegExp('/^/d+$/', $data['data']['adminid']);        $this->assertRegExp('/^/d+$/', $data['data']['regdate']);    }     // 測試 JsonAction UID不存在,UID不存在返回的code應該是-1    public function testJsonUidNotFoundAction() {        $response = $this->__requestActionAndParseBody('Json');        $data     = json_decode($response, TRUE);        $this->assertInternalType('array', $data);        $this->assertEquals('0', $data['code']);    }}



    注意我們創建請求的過程 (__requestActionAndParseBody):1.設置CLI請求的Request對象信息;2.通過Application獲取調度器Dispatcher;3.設置返回接收Response的對象,不自動輸出;4.通過Dispatcher自動分發指定的Request對象;5.獲取返回的Response主體信息6.進行驗證測試結果:第二個Function由于非法請求返回參數code:-1測試失敗。
    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 国产精品白嫩白嫩大学美女 | 毛片免费观看日本中文 | 久草在线高清视频 | 91在线色视频 | 精品黑人一区二区三区国语馆 | 日韩高清影视 | 午夜激情视频免费 | 久久国产夫妻视频 | 久草在线观看资源 | 欧美国产一区二区三区 | a视频在线播放 | 国产超碰人人做人人爱ⅴa 国产精品久久久久久久hd | 成人男女啪啪免费观看网站四虎 | 亚洲成人欧美 | 成人免费一区二区三区 | 国产小视频在线 | 99视频在线观看视频 | 国产精品久久久久久久四虎电影 | 免费三级大片 | 国产免费乱淫av | 精品呦女 | 国产精品视频二区不卡 | 黄色av电影在线播放 | 4399一级成人毛片 | 1级黄色毛片| 欧美淫视频 | 天天草天天爱 | 国产精品成人免费一区久久羞羞 | 中文字幕亚洲视频 | 精品久久久久久久久久久久久 | 失禁高潮抽搐喷水h | 久久超| 一区二区三区欧美在线 | 看免费黄色一级片 | 亚洲一区二区三区精品在线观看 | 黄视频网站免费在线观看 | 成人在线影视 | 黄在线观看在线播放720p | 欧美色爱综合 | 色猫av | 日本欧美一区二区三区在线观看 |