今天是第十三週週一,雖然接下來的時間會比較忙,好比各科的課設、考試、磨錘子。可是仍是有種涅槃重生的感受,昨晚的睡眠確實不怎麼樣,可是今天十分精神,已經想不起來多久沒有這麼早起了~讓我累並快樂着吧!php
Laravel 中集成了PHPUnit, 測試的配置文件爲根目錄下的phpunit.xml,該配置文件爲咱們作好了全部配置工做。laravel
wget https://phar.phpunit.de/phpunit.phar chmod +x phpunit.phar sudo mv phpunit.phar /usr/local/bin/phpunit
public function testBasicExample() { $this->visit('/') ->see('Laravel 5'); }
其中 visit 方法用於訪問指定路由頁面,see 方法則判斷返回響應中是否包含指定字符串。到項目根目錄下運行:web
phpunit
或者只測試某個文件:數據庫
./vendor/phpunit/phpunit/phpunit tests/XXXTest.php
Crawler 意爲(網絡)爬蟲,Crawler 測試容許你在 web 應用中測試頁面訪問。下面是一些 Crawler 測試中經常使用的屬性和方法:數組
$this->response:web應用返回的最後一個響應 $this->currentUri:當前訪問的URL visit($uri):經過GET請求訪問給定URI get($uri, array $headers = []):經過GET請求獲取給定URI頁面的內容,能夠傳遞請求頭信息(可選) post($uri, array $data = [], array $headers = []):提交POST請求到給定URI put($uri, array $data = [], array $headers = []):提交PUT請求到給定URI patch($uri, array $data = [], array $headers = []):提交PATCH請求到給定URI delete($uri, array $data = [], array $headers = []):提交DELETE請求到給定URI followRedirects():根據最後響應進行任意重定向 see($text, $negate = false):斷言給定文本在頁面中是否出現 seeJson(array $data = null):斷言響應中是否包含JSON,若是傳遞了$data,還要斷言包含的JSON是否與給定的匹配 seeStatusCode($status):斷言響應是否包含指望的狀態碼 seePageIs($uri):斷言當前頁面是否與給定URI匹配 seeOnPage($uri)和landOn($uri):seePageIs()的別名 click($name):使用給定body、name或者id點擊連接 type($text, $element):使用給定文本填充輸入框 check($element):檢查頁面上的checkbox複選框 select($option, $element):選擇頁面上下拉列表的某個選項 attach($absolutePath, $element):上傳文件到表單 press($buttonText):經過使用給定文本的按鈕提交表單 withoutMiddleware():在測試中不使用中間件 dump():輸出最後一個響應返回的內容
下面是 Laravel 5.1 提供給 PHPUnit 使用的應用方法和屬性:cookie
$app:Laravel 5.1 應用實例 $code:Artisan命令返回的最後一個碼值 refreshApplication():刷新應用。該操做由TestCase的setup()方法自動調用 call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null):調用給定URI並返回響應 callSecure($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null):調用給定HTTPS URI並返回響應 action($method, $action, $wildcards = [], $parameters = [], $cookies = [], $files = [], $server = [], $content = null):調用控制器動做並返回響應 route($method, $name, $routeParameters = [], $parameters = [], $cookies = [], $files = [], $server = [], $content = null):調用命名路由並返回響應 instance($abstract, $object):在容器中註冊對象實例 expectsEvents($events):指定被給定操做觸發的事件列表 withoutEvents():無需觸發事件模擬事件調度 expectsJobs($jobs):爲特定操做執行被調度的任務列表 withSession(array $data):設置session到給定數組 flushSession():清空當前session中的內容 startSession():開啓應用Session actingAs($user):爲應用設置當前登陸用戶 be($user):爲應用設置當前登陸用戶 seeInDatabase($table, array $data, $connection = null):斷言給定where條件在數據庫中存在 notSeeInDatabase($table, $array $data, $connection = null):斷言給定where條件在數據庫中不存在 missingFromDatabase($table, array $data, $connection = null):notSeeInDatabase()的別名 seed():填充數據庫 artisan($command, $parameters = []):執行Artisan命令並返回碼值
除了標準的 PHPUnit 斷言方法(如 assertEquals()、assertContains()、assertInstanceOf() 等)以外,Laravel 5.1 還提供了不少額外的斷言用於幫助編寫 web 應用的測試用例:網絡
assertPageLoaded($uri, $message = null):斷言最後被加載的頁面;若是加載失敗拋出異常:$uri/$message assertResponseOk():斷言客戶端返回的響應狀態碼是不是200 assertReponseStatus($code):斷言客戶端返回的響應狀態碼是否和給定碼值相匹配 assertViewHas($key, $value = null):斷言響應視圖包含給定數據片斷 assertViewHasAll($bindings):斷言視圖包含給定數據列表 assertViewMissing($key):斷言響應視圖不包含給定數據片斷 assertRedirectedTo($uri, $with = []):斷言客戶端是否重定向到給定URI assertRedirectedToRoute($name, $parameters = [], $with = []):斷言客戶端是否重定向到給定路由 assertRedirectedToAction($name, $parameters = [], $with = []):斷言客戶端是否重定向到給定動做 assertSessionHas($key, $value = null):斷言session包含給定鍵/值 assertSessionHasAll($bindings):斷言session包含給定值列表 assertSessionHasErrors($bindings = []):斷言session包含綁定錯誤 assertHasOldInput():斷言session中包含上一次輸入