BXVoral
@BXVoral
Веб-разработка

Возможно ли сделать mock сервиса?

Тестирую контроллер. Тест унаследован от WebTestCase. Соответственно тест содержит $this->client->request .... Контроллер имеет такую сигнатуру

public function guestCheck(
        Request                       $request,
        BenefitCategoryInterface      $benefitCategoryRepository
    ): JsonResponse
    {

Т.е. автовайринг подставляет BenefitCategoryRepository. Возможно ли его замокать?

Т.е. конечно я сделал
$mockCategories = $this->createMock(BenefitCategoryRepository::class);
        $types = $fakeGuest->getBenefitCategories();
        $mockCategories->method('findAll')
            ->willReturn($types);

Но, как сказать что его нужно использовать. и возможно ли это?
  • Вопрос задан
  • 247 просмотров
Решения вопроса 1
gaparchi
@gaparchi
expects:
$mockCategories->expects(self::once())->method('findAll')->with($id)->willReturn($types);


Но если, это не юнит тест и ты поднимаешь приложение.
То перед запросом переопредели этот сервис в контейнере.
$client->getContainer()->set(BenefitCategoryRepository::class,  $mockCategories);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы