Копирование пользовательской функции введенной модели в контроллер в Laravel Unit Test - PullRequest
0 голосов
/ 26 августа 2018

Я занимаюсь разработкой веб-приложения с использованием 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).Как я могу издеваться над этим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...