Laravel Модельный завод - Большой JSON Заглушки - PullRequest
2 голосов
/ 20 февраля 2020

Я извлекаю информацию о заказе из внешнего API и сохраняю весь ответ JSON в таблицу documents.

Я, очевидно, не хочу вызывать этот API при тестировании, поэтому я настроил фабрику , но я борюсь с тем, как вытащить эти JSON заглушки. Например:

// factory

$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() содержит массив document_id и необработанный JSON ответ от API.

Я знаю, что лучший способ сделать это - изготовить весь документ JSON. JSON содержит около 500 строк, так что это будет очень много времени, но я также не владею этими данными, поэтому я предполагаю, что не должен пытаться их подделывать.

В рамках моего теста я бы предпочел сделать что-то подобное ниже, но я не уверен, как.

factory(OrderDocument::class, 10)->create([
    'document_id' => $this->getDocumentId($i++),
    'document' => $this->getDocumentStub($i++),
]);
...