0

我正在尝试测试创建模型的控制器。

有一个观察者created在模型上监听事件。观察者负责调度作业以创建依赖于基本模型/表的子模型(表条目)。

我知道这I'm sure it will work是在测试时说的最糟糕的话。为了能够测试整个过程的功能,我添加了类似的东西;

if (env('APP_ENV') === 'testing') {
    TariffPricingComponentsCalculater::dispatchNow($tariff, $components);
}

我觉得这段代码不应该出现在 prod 版本中。有没有更简洁的方法可以在测试时立即分派工作

谢谢你。

4

1 回答 1

1

在测试时禁用观察者的更好方法是调用Model::unsetEventDispatcher()setup 方法。

例如:这里我有Plan一个模型,它调用了一个观察者,我可以通过以下方式在测试类的方法中PlanObserver禁用它们:setup

class PlanTest extends TestCase
{
    use RefreshDatabase;

    public function setUp():void
    {
        parent::setUp();
        
        Plan::unsetEventDispatcher();
    }
}

于 2021-07-21T06:24:02.887 回答