Yii2下的Codeception測試-1準(zhǔn)備工作

這是一個系列文章,分3部分:
1带兜、準(zhǔn)備工作--Yii2高級模板的安裝枫笛,以及編寫一個RESTful
2、測試工作--單元測試和API測試
3刚照、力爭上游--覆蓋率刑巧、基礎(chǔ)概念、引用文獻(xiàn)等

這是第一部分
測試之前我們有2件準(zhǔn)備工作:一是安裝Yii2高級模板无畔,二是編寫一個RESTful啊楚。

安裝

目的是將yii2-app-advanced的測試跑起來。

1浑彰、如果你已經(jīng)安裝了composer恭理,可以跳到下一步。

2郭变、安裝和配置Yii2高級模板,參看yii2-app-advanced的Install

3颜价、目前安裝的Yii2.0.14,需要將composer.json中"codeception/verify": "~0.3.1",改為"codeception/verify": "~1.0.0",
否則會出現(xiàn)[Error] Class 'PHPUnit_Framework_Assert' not found诉濒。別忘了執(zhí)行composer update

4周伦、因為建議測試數(shù)據(jù)庫和開發(fā)、正式環(huán)境分開未荒。
所以需要新建數(shù)據(jù)庫yii2advanced_test专挪,然后執(zhí)行php yii_test migrate。每次有數(shù)據(jù)庫的變更都要執(zhí)行一次茄猫。這也是migrate的價值體現(xiàn)

5狈蚤、執(zhí)行./vendor/bin/codecept run運(yùn)行測試。參看Testing

建立一個restful的演示

目的是為測試準(zhǔn)備一個方法和model划纽,用于后面的測試脆侮。

1、增加一個應(yīng)用blog(也可以定義為api等)勇劣,必看Adding more applications
別忘了執(zhí)行php init對blog進(jìn)行安裝靖避。
然后如果你的數(shù)據(jù)庫配置有變化潭枣,請修改common/config/main-local.php的db。

2幻捏、執(zhí)行php yii migrate/create create_news_table盆犁,新建一個news表,在console/migrations/下面多了一個類似m180228_073146_create_news_table.php的文件篡九,添加字段

  'code' => $this->string(32)->notNull()->unique(),
  'title' => $this->string()->notNull(),
  'content' => $this->text()->null(),
  'status' => $this->smallInteger()->notNull()->defaultValue(0),
  'created_at' => $this->integer()->notNull()->defaultValue(0),
  'created_by' => $this->integer()->notNull()->defaultValue(0),
  'updated_at' => $this->integer()->notNull()->defaultValue(0),
  'updated_by' => $this->integer()->notNull()->defaultValue(0),

在common\models下新建News,也可以用gii工具生成谐岁。最簡單的類似:

namespace common\models;
class News extends \yii\db\ActiveRecord
{ 
    public function rules()
    {
        return [
            [['code', 'title'], 'required'],
            [['content'], 'string'],
            [['status', 'created_at', 'created_by', 'updated_at', 'updated_by'], 'integer'],
            [['code'], 'string', 'max' => 32],
            [['title'], 'string', 'max' => 255],
            [['code'], 'unique'],
        ];
    }
}

別忘記執(zhí)行php yii_test migrate

3、遵照RESful規(guī)范新建news的CRUD榛臼,參看Rest快速入門
1)伊佃、新建控制器:

namespace blog\controllers;
use yii\rest\ActiveController;
class NewsController extends ActiveController
{
    public $modelClass = 'common\models\News';
}

2)、配置URL規(guī)則沛善,修改blog/config/main.php

'urlManager' => [
            'enablePrettyUrl' => true,
            //'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => 'news'],
            ],
        ],

3)航揉、啟用 JSON 輸入和輸出,修改blog/config/main.php

'request' => [
            //'class' => '\yii\web\Request',
            'enableCookieValidation' => false,
            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ],
],
'response' => [
            'format' => yii\web\Response::FORMAT_JSON,
            'charset' => 'UTF-8',
],

4)金刁、利用postman檢查news的restful api帅涂。

4、為了演示測試尤蛮,我們在common下新建文件夾helpers,新建CustomString.php媳友,新增一個方法。
內(nèi)容如下:

namespace common\helpers;
class CustomString
{
    //生成一個code 
    public static function generateCode($length = 20, $prefix = '')
    {
        return $prefix . \Yii::$app->security->generateRandomString($length);
    }
}

并且产捞,在common\models\news.php的rules方法后新增:

public function beforeValidate()
    {
        if (empty($this->code)) {
            $this->code = CustomString::generateCode(10, 'n');
        }
        return parent::beforeValidate();
    }

準(zhǔn)備工作已經(jīng)完成庆锦,這里到?jīng)]有什么,就是Yii2的常規(guī)開發(fā)轧葛。

下一篇:測試工作

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市艇搀,隨后出現(xiàn)的幾起案子尿扯,更是在濱河造成了極大的恐慌,老刑警劉巖焰雕,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衷笋,死亡現(xiàn)場離奇詭異,居然都是意外死亡矩屁,警方通過查閱死者的電腦和手機(jī)辟宗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吝秕,“玉大人泊脐,你說我怎么就攤上這事∷盖停” “怎么了容客?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵秕铛,是天一觀的道長。 經(jīng)常有香客問我缩挑,道長但两,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任供置,我火速辦了婚禮谨湘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芥丧。我一直安慰自己紧阔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布娄柳。 她就那樣靜靜地躺著寓辱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赤拒。 梳的紋絲不亂的頭發(fā)上秫筏,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音挎挖,去河邊找鬼这敬。 笑死,一個胖子當(dāng)著我的面吹牛蕉朵,可吹牛的內(nèi)容都是我干的崔涂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼始衅,長吁一口氣:“原來是場噩夢啊……” “哼冷蚂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起汛闸,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤蝙茶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后诸老,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隆夯,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年别伏,在試婚紗的時候發(fā)現(xiàn)自己被綠了蹄衷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡厘肮,死狀恐怖愧口,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情轴脐,我是刑警寧澤调卑,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布抡砂,位于F島的核電站,受9級特大地震影響恬涧,放射性物質(zhì)發(fā)生泄漏注益。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一溯捆、第九天 我趴在偏房一處隱蔽的房頂上張望丑搔。 院中可真熱鬧,春花似錦提揍、人聲如沸啤月。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谎仲。三九已至,卻和暖如春刨仑,著一層夾襖步出監(jiān)牢的瞬間郑诺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工杉武, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留辙诞,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓轻抱,卻偏偏與公主長得像飞涂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子祈搜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容