Using Composer Learning Unit Test

PHPUnit Test卡關了

  • 定義了User的Model還是找不到?
    • 用Classmap的寫法來找到對應的model
  • 定義classmap
    • composer install:產生compsoer.json
    • composer dump-autoload
      • 每次有新的class的時候記得要用dump-autoload一次
      • 定義好namespace的時候也要使用
      • 用找歌曲的概念來解釋,一開始只有說要找甚麼歌,但是沒有說要找哪個歌手的甚麼專輯
    • alias p=./vendor/bin/phpunit
  • 盡量把要測試的方法名稱寫清楚一點
    • 寫的長沒有關係,要有描述性
    • Annotation可以達到
      • 把資料抽離出來
      • 處理例外狀況
  • 踩到exception的坑了
    • 如果傳入錯誤的參數進去,拋出例外的時候要用多行註解,格式錯誤就無法正確的判斷拋出的例外類型
  • alias 是一個好東西,可以打很少的指令達到一樣的效果
    • alias p=./vendor/bin/phpunit
    • alias hexoServer=‘hexo server --port $PORT --host $IP’
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"require": {
"phpunit/phpunit": "^7.4",
"codeception/codeception": "^2.5"
},

"autoload": {
"classmap" : [
"App/Models",
"App/Libraries"
],
"psr-4": {
"App\\": "app"
}
}
}

Testing System Functions

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// 用namespace把Foo用到的time重新定義過
// 注意:如果使用use的話會有重複定義的問題
namespace App\Libraries;
function time() {
return 'stud';
}

class FooTest extends \PHPUnit\Framework\TestCase {
public function setUp() {

}

public function testDynamicFooTime() {
$this->assertEquals('stud', (new Foo)->go());
}
}

參考教學:
Testing System Functions
Composer, Autoloading, Namespacing, and PHPUnit
Phpunit Annotations
Linux Alias