国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

初識 PHPunit stub 模擬返回數(shù)據(jù)

高洛峰
發(fā)布: 2016-10-09 11:12:16
原創(chuàng)
1428人瀏覽過

這是這段時間以來結(jié)合?phpunit?文檔和大牛們的講解,想記錄下自己學(xué)習(xí)到的知識,未來參考補充,完善學(xué)到的東西

? ?我們一般使用單測對公司業(yè)務(wù)里的代碼進行測試,他會幫忙找到你的一個個小小的思考不夠全面的地方。(雖然大牛說過開發(fā)可以先寫單測再來寫實現(xiàn)的代碼,然而現(xiàn)在的我感覺離那個還是有好多距離來著)

?

  stub(樁件):

    “將對象替換為(可選地)返回配置好的返回值的測試替身的實踐方法稱為上樁(stubbing)”——這是官方文檔給出的上樁解釋

立即學(xué)習(xí)PHP免費學(xué)習(xí)筆記(深入)”;

    現(xiàn)在倒回來看我才理解,怎么說呢?舉個梨子。

====前提

    我想測試的是這樣一個方法:switchClothes($username) ?----通過名字查詢數(shù)據(jù)庫,性別是1的,就返回褲子,是0的,就返回裙子;

<?php
        Class Switch{
            public function switchClothes($username){
                $database=new database();
                $gender=$databse->find("id=$username");
                if($gender==0){
                        return "裙子";
                }else{
                        return "褲子";
                }
            }
        }
登錄后復(fù)制

查詢數(shù)據(jù)庫我封裝了一個Database類里面的: find()

?

====開始寫測試

? ? ? ? ?首先我需要測試的是switchClothes這個類,可是在這個類里我需要去通過實例化database這個類用select方法,查詢數(shù)據(jù)庫再來得到我到底是要褲子還是裙子。所以,,真的是太麻煩了,我只是單純的想測測這個方法的邏輯好么,萬一數(shù)據(jù)庫掛了,萬一這個username不存在,我難道還要專門去數(shù)據(jù)庫創(chuàng)造這樣一條數(shù)據(jù)么,太麻煩了也不夠好。萬一需要測試包含更新數(shù)據(jù)的方法,難道還要真的修改數(shù)據(jù)么?

? ? ? ? ?stub就華麗麗降臨了。媽媽再也不用擔(dān)心我要去操作數(shù)據(jù)庫,再也不擔(dān)心接口不通神馬的了。

1.png

我可以對這個類進行上樁。說通俗點,我覺得就是對這個類進行了一個模擬,做了一個假的database類;

    如上如 ?A=switchClothes ?B=database類 ?D=數(shù)據(jù)庫 ? C=stub 的那個類

    本來應(yīng)該是A調(diào)用B,B查詢數(shù)據(jù)庫的.

    但是C的存在就走了紅色那條線,C不會去查數(shù)據(jù)庫,C是被我掌控的,我可以指定里面的find()方法返回1或者0 至少在A看來它和B一樣,反正會給我返回個0或者1來的。這就等于C 將A與B,D這個體系隔絕了開來,減少了耦合;

    然后,就可以開始構(gòu)造我需要的C了。

    

<?php
use PHPUnit\Framework\TestCase;

class StubTest extends TestCase
{
    

    public function testStub()
    {
        // 為database類建立樁件。
        $stub = $this->getMockBuilder("database")//類名
                             ->setMethods(array('find')) //可以是多個方法
                              ->getMock();

        // 配置樁件。
        $stub->method('find')//想要設(shè)置返回值的方法
             ->willReturn(0);//設(shè)置返回值 

        // 現(xiàn)在調(diào)用 $stub->select() 將返回 '裙子'。
        $this->assertEquals('裙子', $stub->find());
    }
}
?>
登錄后復(fù)制

這就是C了。

?單測的時候,走紅色那條路就行了。

?all

PHP速學(xué)教程(入門到精通)
PHP速學(xué)教程(入門到精通)

PHP怎么學(xué)習(xí)?PHP怎么入門?PHP在哪學(xué)?PHP怎么學(xué)才快?不用擔(dān)心,這里為大家提供了PHP速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號