Я занимаюсь разработкой веб-приложения с использованием Laravel.Я делаю модульное тестирование моего кода.Признаться, я новичок в Laravel Unit Test.Сейчас я просто разрабатываю собственную команду ремесленников.Я пытаюсь проверить его.То, что я сейчас пытаюсь сделать, это то, что я пытаюсь смоделировать метод модельного класса.Посмотрите на мой код команды.
class SyncUpdates extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'sync:updates';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command to check for the update from the Spot API and then sync the data interacting with Google APS';
/**
* Create a new command instance.
*
* @return void
*/
private $geographicRepository;
private $pusherService;
private $activityRepository;
private $milestoneRepository;
public function __construct(GeographicRepository $geographicRepository,
PusherService $pusherService,
ActivityRepository $activityRepository,
MilestoneRepository $milestoneRepository)
{
parent::__construct();
$this->geographicRepository = $geographicRepository;
$this->pusherService = $pusherService;
$this->activityRepository = $activityRepository;
$this->milestoneRepository = $milestoneRepository;
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$newLocations = $this->geographicRepository->syncGeoLocationDataWithSpot();
//Other codes continue
}
}
Как вы можете видеть из приведенного выше кода, GeographicRepository внедряется в класс команд как зависимость.
Это мой модульный тест.
class SyncUpdatesCommandTest extends TestCase
{
use RefreshDatabase;
/**
* A basic test example.
*
* @return void
*/
public function test_activities_created_for_new_distance_milestones()
{
//here I want to mock the $this->geographicRepository->syncGeoLocationDataWithSpot()
Artisan::call("sync:updates");
}
}
Если вы прочитаете комментарий в модульном тесте, вы увидите, что я пытаюсь сделать.Мне нужно полностью смоделировать эту функцию, потому что она включает в себя не только логику базы данных, но и сетевое взаимодействие (вызовы API).Как я могу издеваться над этим?