相依的 method 要怎寫測試?

1. 运行环境

1). 当前使用的 Laravel 版本?

6.20.6

2). 当前使用的 php/php-fpm 版本?

PHP 版本:7.4.2

2. 问题描述?

在 object 中有個檢查訂單的 method, 在這 method 中檢查後,會將相關的檢查訊息存入另個表中
且這個 object 包成 facade

// schematic
class Facade
{
    function inspect(Order $order)
    {
        // some inspect
        // then store
    }
}

但在測試裡,不知該如何去測試這段
因為 mock inspect 這個 method 後
裡面的存結果流程就不會執行,所以找不到檢查結果

Facade::shouldReceive('inspect')->once()
$order = Order::find();
$order->inspect // is null

有想過先把檢查的結果先吐給外部,再從外部呼叫儲存的 method

$result = Facade::inspect($order);
Facade::store($result);

但檢查跟儲存二個 method 是相依的,拆開在使用上怕會有遺漏的問題

Facade::inspect($order);
// then...forget...

想請問這該如何處理較好?

感謝大家

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!