嗨,我正在为使用Laravel构建的小型API编写测试。我有一些数据通过前端的axios发布请求进入API,并且伪造了以下数据。
public function test_that_the_form_json_data_structure_is_correct()
{
$lead = [
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'johndoe@example.com',
'phone' => '000-000-0000',
'street_address' => '123 Main Street',
'city' => 'CityA',
'state' => 'ZZ',
'zip' => '928171',
'spouse' => [
'name' => 'Sarah Aims',
'email' => 'sarahaims@example.com',
'phone' => '000-000-0000',
]
];
$quote = [
'address_is_same' => 1,
'property_street' => '123 Main Street',
'property_city' => 'CityA',
'property_state' => 'ZZ',
'property_zip' => '928171',
'primary_residence' => 1,
'secondary_residence' => 0,
'rental_property' => 0,
'number_of_units' => 2,
'losses' => 0,
'explain' => 'Some explaination here...',
'additional_comments' => 'Additional comments here...'
];
$this->json('POST', '/get-a-quote/home', [
'data' => [
'lead' => $lead,
'quote' => $quote
]
])->seeJsonStructure([
'lead_id',
'quote_id'
]);
}
我意识到我将需要针对前端使用的不同形式在多个测试中编写该$ lead数组变量。我知道Laravel中的模型工厂专门用于类,因此我想知道使用最佳格式的JSON数据的最佳做法以及如何对其进行最佳测试。我想我将需要测试上面看到的实际数据,然后针对该API对传入数据的作用编写测试,例如。创建模型等。
答案 0 :(得分:1)
您的测试就像您的普通代码库一样。 DRY原则仍然适用。
因此,我想建议您首先使用Laravel factories。例如,我猜您的$lead
变量是User
模型,在这种情况下,您可以这样做:
$lead = factory(User::class)->make()->toArray()
这将返回完整的User
模型作为数组。
但是你说:
使用格式不像您的模型的JSON数据
因此,在这种情况下,我只需在测试中提供帮助即可。如果您需要在所有地方使用它,甚至可以使用静态方法创建一个可以完全返回数据的类,然后可以更改测试中需要更改的字段。