В методе 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));
}