我正在尝试编写一个功能测试来检查我们的REST api中的一个方法是否正确地调度了一个作业。
我知道Laravel包含了expectedJobs方法。但这只会检查作业是否已发送。 我还需要检查它实例化的参数是否正确。
这样,我可以依靠这个功能测试+另一个单元测试来检查当用正确的参数实例化时作业本身是否正常运行。否则,我只知道:
但是我不知道是否通过其余的api调用使用正确的参数来实例化作业。
为了清楚起见,这里有一些伪代码:
REST api调用的功能测试:
$this->expectsJobs(\App\Jobs\UpdatePricesJob);
$this->json("POST", "/api/resource/{$someresource->id}", [
"update_prices" => 1,
"prices" => [
/** the prices list **/
]
])->seeJson(["success" => true]);
/** The test succeeds if an UpdatePricesJob is dispatched **/
UpdatePricesJob的单元测试:
$someresource = Resource::find($someResourceId);
$newPrices = [ /** properly-formatted prices **/ ]
$this->dispatch(new UpdatePricesJob($someresource, $newPrices));
$this->assertEquals($someresource->prices, $newPrices);
/** The test succeeds if running UpdatePricesJob properly updates the resource prices to the ones specified in the job params **/
正如您所看到的,无法知道REST api调用是否以一些格式正确的价格实例化UpdatePricesJob。
提前致谢!