我从外部 API 中提取订单信息并将整个 JSON 响应保存到documents
表中。
我显然不想在测试时调用这个 API,所以我设置了一个工厂,但我正在努力解决如何提取这些 JSON 存根。例如:
// 工厂
$factory->define(App\OrderDocument::class, function (Faker $faker) {
return [
'document_id' => $faker->uuid,
'status' => $faker->randomElement(['open', 'partial', 'processed', 'updating']),
'document' => $faker->text
];
});
// 当前使用它就像...
foreach ($this->fullDocuments() as $id => $document){
$a = factory(\App\OrderDocument::class)->create([
'document_id' => $id,
'status' => 'full'
]);
$a->setRawAttributes(['document' => $document]);
$a->save();
}
其中$this->fullDocuments()
包含来自 API 的 document_id 和原始 JSON 响应的数组。
我知道一个更好的方法是工厂化整个 JSON 文档。JSON 包含大约 500 行,所以这将非常耗时,但我不拥有这些数据,所以我认为我不应该试图伪造它。
在我的测试中,我更愿意执行以下操作,但不确定如何操作。
factory(OrderDocument::class, 10)->create([
'document_id' => $this->getDocumentId($i++),
'document' => $this->getDocumentStub($i++),
]);