Laravel框架內置了許多測試輔助函數(shù)和模擬功能,這非常好。然而,我注意到其他工程師在出現(xiàn)問題時往往會陷入調試困境。
Laravel文檔中給出了以下示例:
Queue::assertPushed(function (ShipOrder $job) use ($order) { return $job->order->id === $order->id; });
很簡單,對吧?我們正在確保 `ShipOrder` 任務被推送到隊列中,并且訂單ID匹配。
但是,如果ID不匹配或者發(fā)生其他錯誤會怎樣呢?我們會得到以下錯誤信息:
Failed asserting that false is true.
這并沒有什么用。我們知道任務沒有被推送,但是是由于ID匹配失敗還是其他原因引起的呢?當需要滿足多個條件時,這個問題就變得更加復雜了:
Queue::assertPushed(function (ShipOrder $job) use ($order) { return $job->order->id === $order->id && $job->order->second === $order->second && $job->order->third === $order->third && $job->order->fourth === $order->fourth; });
現(xiàn)在,如果任何一個條件失敗,我們仍然會得到相同的PHPUnit錯誤消息:
Failed asserting that false is true.
我們無法輕松知道哪個條件失敗了。您可以逐個刪除條件進行排查,但這是一種耗時的過程。有更好的方法。
我們可以使用斷言來比較每個條件,而不是使用鏈式條件。然后,如果所有條件都為真,手動返回 true。
Queue::assertPushed(function (ShipOrder $job) use ($order) { $this->assertSame($job->order->id, $order->id); $this->assertSame($job->order->second, $order->second); $this->assertSame($job->order->third, $order->third); $this->assertSame($job->order->fourth, $order->fourth); return true; });
現(xiàn)在,如果任何一個斷言失敗,PHPUnit 將能夠精確定位到錯誤的行號,從而加快調試速度,讓您迅速解決問題。文章來源:http://www.zghlxwxcb.cn/article/693.html
Failed asserting that X is identical to Y # --- Failed asserting that 456 is identical to 123. /tests/PathToFileTest.php:62
總之,通過為每個比較使用斷言,您可以快速定位和解決代碼中的問題。有效利用 Laravel 的模擬功能可以顯著提高開發(fā)者的生產力。文章來源地址http://www.zghlxwxcb.cn/article/693.html
到此這篇關于使用 Laravel Mock 提高您的工作效率的文章就介紹到這了,更多相關內容可以在右上角搜索或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!