Я пытаюсь проверить следующий метод:
/* ConfigurationService.php*/
public function checkConfigs()
{
$configurations = $this->getConfigurations();
return $configurations['configExample'] === '1';
}
Учитывая, что метод getConfigurations()
вызывает другие методы вне этого файла, внутри ConfigurationRepository.php
, я попытался смоделировать только его возвращениеи выполнить метод, который я хочу протестировать (checkConfigs()
): (пропущен некоторый код)
/* ConfigurationServiceTest.php */
$configurationRepoMock = \Mockery::mock(ConfigurationRepository::class);
$configurationRepoMock
->shouldReceive('getConfigurations')
->once()
->andReturn(['configExample' => '1']);
$configurationServiceMock = \Mockery::mock(ConfigurationService::class);
$this->app->instance('App\Services\ConfigurationService', $configurationServiceMock);
$configurationServiceInstance = new ConfigurationService($configurationRepoMock);
$response = $configService->checkConfigs();
ПРОБЛЕМА, а не возвращение поддельного результата (['configExample' => '1']
), метод getConfigurations()
выполняется, сбой из-за других вызовов методов внутри него, возвращая ошибку:
Пересмешка \ Исключение \ BadMethodCallException: Получено Mockery_1_App_Repositories_API_ConfigurationRepository :: methodInsideGetConfigurations (), но не было указано никаких ожиданий
1017 *
Подводя итог, andReturn()
не работает.Есть идеи?