Zend certified PHP/Magento developer

How to write unit test for controller front end which submits data in database using ajax?

This my code for the controller.

   <?php

    declare(strict_types=1);

    namespace VendorModuleControllerIndex;

    use MagentoFrameworkAppActionHttpPostActionInterface;
    use MagentoFrameworkAppResponseHttp;
    use MagentoFrameworkAppRequestHttp as HttpRequest;
    use MagentoFrameworkControllerResultInterface;
    use MagentoFrameworkExceptionLocalizedException;
    use MagentoFrameworkControllerResultJsonFactory;
    use MagentoFrameworkViewResultPageFactory;
    use MagentoFrameworkHTTPPhpEnvironmentRemoteAddress;
    use VendorModuleModelMyModelFactory;
    use MagentoFrameworkMessageManagerInterface;
    use MagentoFrameworkStdlibDateTimeTimezoneInterface;
    use PsrLogLoggerInterface;
    /**
     * This class allows to save the request in database
     * Class Index
     */


     class Index implements HttpPostActionInterface
     {

      /**
       * @var PageFactory
       */
       protected $resultPageFactory;
      /**
       * @var Json
       */
      protected $serializer;
     /**
      * @var LoggerInterface
      */
      protected $logger;
      /**
       * @var Http
       */
       protected $http;

      /**
       * @var HttpRequest
       */
       protected $httpRequest;

      /**
       * @var RemoteAddress
       */
       protected $remote;

      /**
       * @var MyModelFactory
       */
       protected $myModel;

      /**
       * @var JsonFactory
       */
       protected $resultJsonFactory;

      /**
       * @var ManagerInterface
       */
       protected $messageManager;
 
      /**
       * @var TimezoneInterface
       */
       protected $timezoneInterface;

     /**
      * Constructor
      *
      * @param PageFactory $resultPageFactory
      * @param LoggerInterface $logger
      * @param Http $http
      * @param HttpRequest $httpRequest
      * @param RemoteAddress $remote
      * @param MyModelFactory $myModel
      * @param JsonFactory $resultJsonFactory
      * @param ManagerInterface $messageManager
      * @param TimezoneInterface $timezoneInterface
      */
      public function __construct(
      PageFactory $resultPageFactory,
      LoggerInterface $logger,
      Http $http,
      HttpRequest $httpRequest,        
      RemoteAddress $remote,
      MyModelFactory $myModel,
      JsonFactory $resultJsonFactory,
      ManagerInterface $messageManager,
      TimezoneInterface $timezoneInterface
  ) {
      $this->resultPageFactory = $resultPageFactory;
      $this->logger = $logger;
      $this->http = $http;
      $this->httpRequest= $httpRequest;       
      $this->remote = $remote;
      $this->myModel = $myModel;
      $this->resultJsonFactory = $resultJsonFactory;
      $this->messageManager = $messageManager;
      $this->timezoneInterface = $timezoneInterface;
   }

    /**
     * Execute save action
     *
     * @return ResultInterface
     */
     public function execute()
    {
       $resultJson = $this->resultJsonFactory->create();
       $post= $this->httpRequest->getPostValue();
    
       $dateTime = $this->timezoneInterface->date()->format('Y-m- 
       d H:i:s');
       $ip = $this->remote->getRemoteAddress();
       if (empty($post['mobile'])) {
           throw new LocalizedException(__('Mobile number is 
           required'));
       }
    
    try {
        $model =  $this->myModel->create();
        $data = ['mobile'=>$post["mobile"],
             'sourc_url'=>$post["currentUrl"],
             'ip_address' => $ip,
             'created'=>$dateTime
             ];
        $model->setData($datas)->save();            
        $message =  $this->messageManager->addSuccess('form submitted succesfully.');
        return $resultJson->setData(['success' => $message]);
    } catch (LocalizedException $e) {
        return  $resultJson->setData($e->getMessage());
    } catch (Exception $e) {
        $this->logger->critical($e);
        return  $resultJson->setData($e->getMessage());
    }
}

}