#php #laravel #api #unit-testing
#php #laravel #API #модульное тестирование
Вопрос:
Я очень новичок в тестировании в Laravel, я работаю в laravel 8, функция, которую я хочу протестировать, это :
Когда я запускаю свой тест, я получаю эту ошибку:
1) TestsUnitappTestHttpTestControllersTestOrderControllerTest::testStore
Invalid JSON was returned from the route.
Спасибо за любую помощь!
Ответ №1:
У вас есть два сценария
- В вашем контроллере вы можете сделать
return response()->json([
'order' => $newOrder,
'status' => ($request->doValidate) ? 'pend' : 'draft'
]);
и ваш тестовый пример будет таким же
- В вашем контроллере вы можете сделать
return response()->json($newOrder);
// or
return $newOrder;
и в вашем тестовом примере вы будете делать
public function testStore()
{
Sanctum::actingAs($this->user, ['*']);
$response = $this->postJson(action('OrderController@store'), [
'doAssigned' => false,
'doValidate' => false,
]);
$response->assertJsonFragment([
'status' => 'draft'
]);
}
Комментарии:
1. Большое вам спасибо за вашу помощь, но я все еще в замешательстве, я все еще получаю ту же ошибку даже после внесения изменений . Tests Unit AppTest HttpTest ControllersTest OrderControllerTest::testStore Неверный JSON был возвращен из маршрута
2. Использовали ли вы
return response()->json($newOrder);
иdd($newOrder);
перед его возвратом и вставили результат в свой вопрос.3. Да, я использовал
return response()->json($newOrder);
dd($newOrder);
бит и, я все еще получаю ту же ошибку4. Я полагаю, что ваш код где-то выдает ошибку, поэтому вам нужно сделать
$response = $this->postJson(action('OrderController@store'), [ 'doAssigned' => false, 'doValidate' => false, ])->dump();
и посмотреть, какой результат вы получили.