Laravel中 FeatureTest和 UnitTest的區別是什麼

songxue77發表於2021-06-28

如題

剛接觸編寫測試程式碼,看教程寫了一些FeatureTest

琢磨著再寫一點UnitTest

發現FeatureTest裡面使用的很多功能UnitTest裡用不了

:tired_face::tired_face::tired_face:

最後才發現這倆繼承的類不同

FeatureTest類繼承了Tests\TestCase;
這個類初始化了Laravel容器,Test裡面可以藉助Laravel的函式寫程式碼

UnitTest類繼承了PHPUnit\Framework\TestCase;
這個類沒有初始化Laravel容器,很多Laravel的功能是用不了的
我的程式碼全部都是Controller->Service->Repository->Model的分層結構寫的
各個層裡的類都依賴了很多上一層或者下一層的類

沒有了依賴注入,我怎麼去測試Service類的某一個函式?
或者說我對於UnitTest的理解是錯的?
或者說我的編碼邏輯有問題呢?

想問問大家都是怎麼寫的:smirk:

:persevere::persevere::persevere:
舉個例子吧
如果有一個Model類 MemberProduct
這個類寫的時候就已經繼承了 Illuminate\Database\Eloquent\Model類
不初始化Laravel,我想New一個這個類都不容易,更沒有辦法去寫測試

如果有一個Service類 MemberService
這個類注入了MemberRepository類,MemberRepository類注入了Member類
不初始化Laravel,Member類我就New不了,初始化MemberService類都困難,怎麼才能寫測試呢?

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章