簡體   English   中英

測試Eloquent Observer的方法是否觸發事件

[英]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方法中的代碼。 從我看來, assertDispatchedassertNotDispatched方法僅適用於偽造事件。 有沒有辦法斷言沒有Event::fake不會觸發特定事件?

畢竟,該解決方案非常簡單:

Laravel讓您指定哪些事件應該被偽造,作為fake方法的參數。 在我的示例中:

Event::fake([JobCustomerTotalAmountDueChanged::class])

所有其他事件都將被觸發和處理。 此外,您只能參考作為fake方法的參數傳遞的事件進行斷言。 如果您不傳遞任何參數,Laravel將嘗試“偽造”應用程序中的每個事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM