#php #arrays #laravel
Вопрос:
Мой тест assertJSON не работает и говорит, что я получаю следующую ошибку
Вот тестовый код
$user = Sanctum::actingAs(
User::factory()->create(),
['*']
);
$customer = Customer::first();
$response = $this->getJson('api/customers/' . $customer->slug);
$response->assertStatus(200);
$response->assertJson(
[
'data' => [
'uuid' => $customer->uuid,
'customer_name' => $customer->customer_name,
'email' => $customer->email,
'slug' => $customer->slug,
'street_1' => $customer->street_1,
'street_2' => $customer->street_2,
'city' => $customer->city,
'postcode' => $customer->postcode,
'telephone_number' => $customer->telephone_number,
'county' => $customer->county,
'customer_type' => $customer->customerType,
'archived' => $customer->archived ? 'Yes' : 'No',
]
]
);
And here is the customer resource
public function toArray($request)
{
return [
'uuid' => $this->uuid,
'customer_name' => $this->customer_name,
'email' => $this->email,
'slug' => $this->slug,
'street_1' => $this->street_1,
'street_2' => $this->street_2,
'city' => $this->city,
'postcode' => $this->postcode,
'telephone_number' => $this->telephone_number,
'county' => $this->county,
'customer_type' => $this->customerType,
'archived' => $this->archived ? 'Yes' : 'No',
];
}
The 2 JSON arrays are exactly the same and the other tests are working and everything on the front end is working just fine too.
More of the error
Комментарии:
1. Глупый вопрос, является ли одна строка, а другая-декодированным объектом? У меня было такое, когда я раньше забывал json_decode ().
2. То есть… ваш тестируемый объект является объектом или массивом, в то время как тест использует assertJSON и терпит неудачу, потому что это не буквальный JSON?
3. Кроме того, возможно, вместо этого рассмотрите возможность тестирования фрагмента: laracasts.com/discuss/channels/testing/…