Контроллер модульного тестирования в laravel 8

Я очень новичок в тестировании в Laravel, я работаю в laravel 8, функция, которую я хочу протестировать:

Когда я запускаю свой тест, я получаю эту ошибку:

ErrorException: попытка получить идентификатор свойства не-объекта

Спасибо за любую помощь!


person SouhiStack    schedule 04.11.2020    source источник
comment
Я думаю, это может помочь: stackoverflow.com/a/50709981/9920875, потому что я также думаю, что вы могли бы пройти в вместо этого неправильное пространство имен запроса.   -  person Johhn    schedule 04.11.2020
comment
Спасибо, но я определил использование Illuminate\Http\Request; в моей тестовой функции, и я не думаю, что это должно быть проблемой.   -  person SouhiStack    schedule 04.11.2020
comment
@Джон, если бы это было так, PHP жаловался бы на то, что параметр не соответствует сигнатуре функции.   -  person miken32    schedule 04.11.2020
comment
Что такое $this->user и где он определяется? Пожалуйста, добавьте этот код к вашему вопросу.   -  person miken32    schedule 04.11.2020
comment
каждый заказ имеет user_id, и для того, чтобы создать заказ, нам нужно установить соединение с пользователем, я приказываю создать пользователя, который я использовал userFactory, который генерирует для меня пользователей во время тестирования.   -  person SouhiStack    schedule 04.11.2020


Ответы (1)


Обычно вам даже не нужно использовать класс Request в своих тестах.

public function testStore()
{
    Sanctum::actingAs($this->user, ['*']);

    $response = $this->postJson('/order/store', [
        'doAssigned' => false,
        'doValidate' => false,
    ]);

    $response->assertJsonPath('status', 'draft');
} 
person IGP    schedule 04.11.2020
comment
Большое спасибо за вашу помощь, но я не понял, что вы подразумеваете под конечной точкой, в моем «api.php» у меня есть: Route::apiResource('order', 'OrderController'); - person SouhiStack; 05.11.2020
comment
В моем api.php я добавил строку Route::get('order/store', 'OrderController@store');, но получил ошибку InvalidArgumentException: Action App\Http\Controllers\App\Http\Controllers\OrderController@store not defined. - person SouhiStack; 05.11.2020
comment
Конечная точка — order/store. Ошибка, которую вы получили, связана с пространствами имен. Вместо action('App\Http\Controllers\OrderController@store') вы можете попробовать просто action('OrderController@store'), но вы можете просто указать конечную точку непосредственно в тесте. Я только что отредактировал его. - person IGP; 05.11.2020