Тестирование ресурсов API Laravel с внедрением зависимостей и пользовательских запросов - PullRequest
0 голосов
/ 09 мая 2018

Тип параметра подсказки маршрута не создается при вызове из теста.

У меня есть ресурс Laravel API Route::apiResource('users', 'Api\UserController');

Вот мой метод обновления в контроллере:

public function update(UpdateUserRequest $request, User $user)
{
    //
}

Внутри UpdateUserRequest:

public function rules()
{
    dd($this->route("user"));
}

Если я вызову эту конечную точку из Почтальона, я получу полный объект user. Однако, если я позвоню из теста:

    $response = $this->actingAs($this->user)->
        json('POST', '/api/users/'.$this->user->id, [
            '_method' => 'PUT',
            'data' => [
                // ...
            ]
        ]);

Я просто получаю строку "1", а не экземпляр объекта User.

1 Ответ

0 голосов
/ 09 мая 2018

Хорошо, одна вещь, которая сработала, и я не знаю, является ли это правильным или "Laravel" способом выполнения, это принудительно создать экземпляр модели в конструкторе пользовательских запросов и связать экземпляр внутри теста. :

В UpdateUserRequest:

private $user;

public function __construct(User $user)
{
    $this->user = $user;
}

В тесте:

$this->user = factory(\App\Models\User::class)->create();
$this->app->instance(\App\Models\User::class, $this->user);
...