[英]Test if Eloquent Observer`s method fires an event
當Eloquent模型屬性之一更新時,我正在使用的應用程序將觸發一個事件。
Eloquent模型稱為Job
,它應該在duration
屬性更新時觸發JobCustomerTotalAmountDueChanged
。 我在JobObserver
有以下代碼:
public function saved(Job $job)
{
if ($job->isDirty('duration')) {
event(new JobCustomerTotalAmountDueChanged($job));
}
}
當我嘗試使用Event::fake
對其進行測試時,不會觸發口才事件,這意味着永遠不會執行已saved
方法中的代碼。 從我看來, assertDispatched
和assertNotDispatched
方法僅適用於偽造事件。 有沒有辦法斷言沒有Event::fake
不會觸發特定事件?
畢竟,該解決方案非常簡單:
Laravel讓您指定哪些事件應該被偽造,作為fake
方法的參數。 在我的示例中:
Event::fake([JobCustomerTotalAmountDueChanged::class])
所有其他事件都將被觸發和處理。 此外,您只能參考作為fake
方法的參數傳遞的事件進行斷言。 如果您不傳遞任何參數,Laravel將嘗試“偽造”應用程序中的每個事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.