【发布时间】:2020-10-11 12:00:21
【问题描述】:
我正在尝试测试一个创建模型的控制器。
有一个观察者在模型上监听created 事件。观察者负责调度作业以创建依赖于基本模型/表的子模型(表条目)。
我知道I'm sure it will work 是测试时说的最糟糕的话。为了能够测试整个过程的功能,我添加了类似的东西;
if (env('APP_ENV') === 'testing') {
TariffPricingComponentsCalculater::dispatchNow($tariff, $components);
}
我感觉这段代码不应该出现在 prod 版本中。有没有更简洁的方法可以在测试时立即分派工作
谢谢。
【问题讨论】:
-
您可以通过创建模型并让观察者触发作业来让代码根据需要工作……您可以伪造队列,使其实际上不会调度,但您可以断言事情排队
-
我明白了,这意味着我必须在不同的测试文件中测试作业,以确保它完成了我期望的工作。我说的对吗?
-
有点取决于你在做什么以及它是如何设置的,但你确实有能力通过伪造很多服务来测试很多东西,显然你也是如何设计你的代码的影响独立测试的难易程度
-
非常感谢。它现在正在使用两个单独的测试文件和一个伪造的队列:)
标签: laravel phpunit laravel-testing