) к интерфейсу, так что моя тестовая реализация не должна расширяться от реальной.

у небольшой API в Laravel, частично для целей изучения этого фреймворка. Я думаю, что обнаружил зияющую дыру в документах, но это может быть из-за того, что я не понимал «путь Ларавела», чтобы делать то, что я хочу.

Я пишу HTTP API, чтобы, помимо прочего, перечислять, создавать и удалять системных пользователей на сервере Linux. Структура выглядит так:

Маршруты к/v1/users соединятьGET, POST а такжеDELETE глаголы для методов контроллераget, create а такжеdelete соответственно.КонтроллерApp\Http\Controllers\UserController на самом деле не запускает системные вызовы, что делается службойApp\Services\Users.Служба создается ServiceProviderApp\Providers\Server\Users который регистрируетsingleton услуги на отсрочку.Служба создается Laravel автоматически и автоматически вводится в конструктор контроллера.

ОК, так что все это работает. Я также написал тестовый код, например, так:

public function testGetUsers()
{
    $response = $this->json('GET', '/v1/users');
    /* @var $response \Illuminate\Http\JsonResponse */

    $response
        ->assertStatus(200)
        ->assertJson(['ok' => true, ]);
}

Это тоже отлично работает. Тем не менее, это использует обычные привязки дляUserServiceи я хочу вместо этого поставить макет / макет.

Я думаю, что мне нужно изменить свойUserService к интерфейсу, который прост, но я не уверен, как сказать базовой тестовой системе, что я хочу, чтобы он запускал мой контроллер, но с нестандартным сервисом. понятноApp::bind() всплывает в ответах Stack Overflow при исследовании этого, ноApp В тестах, созданных ремесленниками, охват не происходит автоматически, поэтому кажется, что он цепляется за соломинку.

Как я могу создать фиктивную службу и затем отправить ее в Laravel при тестировании, чтобы он не использовал вместо этого стандартный ServiceProvider?

Ответы на вопрос(2)

Ваш ответ на вопрос