The Best Fluffy Pancakes recipe you will fall in love with. Full of tips and tricks to help you make the best pancakes.
測試跟實際環境是分開的,所有變數值都要自己再設定一次,不然就會是空的,設定的方式可以xml 以及 .env.testing混用
2024-10-17更正,在發現.env.testing的設定其實不是照自己想像的那樣,以及看到這篇文章後決定都改用phpunit.xml 來做測試的變數設定
https://masteringlaravel.io/daily/2024-06-17-why-we-use-phpunit-xml
根目錄下有個phpunit.xml的檔案,其中
<php>
<env name=”APP_ENV” value=”testing”/>
<env name=”APP_URL” value=”http://127.0.0.1″/>
<env name=”APP_URL_OAUTH” value=”http://127.0.0.1/aaa”/>
<env name=”BCRYPT_ROUNDS” value=”4″/>
<env name=”CACHE_DRIVER” value=”array”/>
<!– <env name=”DB_CONNECTION” value=”sqlite”/> –>
<!– <env name=”DB_DATABASE” value=”:memory:”/> –>
<env name=”DB_CONNECTION” value=”mysql_testing”/>
<env name=”DB_DATABASE” value=”workdj_backend_testing”/>
<env name=”MAIL_MAILER” value=”array”/>
<env name=”QUEUE_CONNECTION” value=”sync”/>
<env name=”SESSION_DRIVER” value=”array”/>
<env name=”TELESCOPE_ENABLED” value=”false”/>
</php>
<env name=”APP_ENV” value=”testing”/> 對應到 測試環境中的.env檔案名稱
若以上述設定則是 .env.testing
但也可以不新增一個.env.testing檔案出來,單純使用其他諸如
<env name=”APP_URL” value=”http://127.0.0.1″/>
的設定值來設定 APP_URL 在測試環境中的值
測試中的環境與實際稍有不同(url路徑、資料庫區分成production 跟 testing 兩種),取得認證token的方法也要另外處理,直接使用執行環境所取得的token是無法通過測試中的auth認證,會出現the resource owner or authorization server denied the request相關錯誤
原本卡了幾天的問題,終於在這篇文章找到靈感,並請gpt修改後實作成功
https://laracasts.com/discuss/channels/testing/passport-personal-access-token-unit-test
測試範例

AuthHelper.php
直接在資料庫中使用factory建立一筆user資料,並使用passport 提供的 ClientRepository 類別來建立對應secret跟token
