Тестирование вызова Mocking API в Laravel - PullRequest
0 голосов
/ 13 февраля 2020

В методе store в контроллере у меня есть метод, который обращается к GitHub API, чтобы проверить, существует ли представленный репозиторий. Это все работает в браузере. Я пытаюсь создать тест для насмешки API, где я не делаю реальный вызов.

Тем не менее, в моем тесте он работает с API, а не с насмешками, что приводит к провалу теста.

Как бы я посмеялся над ответом API GitHub в моем тесте?

Контроллер * Метод 1008 * (фрагмент вызова API):

...validation...

    try {
        $ghRepo = \GrahamCampbell\GitHub\Facades\GitHub::repo()->show(Str::before($request->repository, '/'), Str::after($request->repository, '/'));
    } catch (Exception $error) {
        return redirect()->back()->withErrors([
            'repository' => $error->getMessage(),
        ]);
    }

... store ... return view

Тест:

public function test_it_can_create_repository_monitor()
    {
        $github = Mockery::mock(\Github\Api\Repo::class)
            ->shouldReceive('show')
            ->andReturn(['id' => 1, 'name' => 'dundermifflin/dwight-schrute-beet-farm-tips']);

        app()->instance(\Github\Api\Repo::class, $github);
        $response = $this->post(route('repository.create'),[
            'repository'    => 'dundermifflin/dwight-schrute-beet-farm-tips',
            'lock_location' => 'composer.lock',
        ])->assertOk();
    }

\ Github \ Api \ Repo (при необходимости):

    public function show($username, $repository)
    {
        return $this->get('/repos/'.rawurlencode($username).'/'.rawurlencode($repository));
    }
...