Zend certified PHP/Magento developer

Unit Test Case Error For Observer Class Sales Order

Hi
Can anyone help me on this. I have created the unit test for the observer class sales order . When I am running the Unit test I am getting below error I tried but didn’t get any solution
.

There was 1 error: 1)
VendorNameModuleNameTestUnitObserverSalesOrderPlacedAfterObserverTest::testExecute
Error: Call to a member function getId() on null

/var/www/html/vendor/VendorName/magento-module-ModuleName/src/Observer/SalesOrderPlacedAfterObserver.php:45
/var/www/html/vendor/VendorName/magento-module-ModuleName/src/Test/Unit/Observer/SalesOrderPlacedAfterObserverTest.php:84

ERRORS! Tests: 1, Assertions: 0, Errors: 1.

Main Observer Class

<?php

declare(strict_types=1);

namespace VendorNameModuleNameObserver;

use VendorNameModuleNameHelperQueue as QueueHelper;
use VendorNameModuleNameHelperConnection as SFMCHelper;
use MagentoFrameworkEventManager;
use MagentoFrameworkEventObserverInterface;

class SalesOrderPlacedAfterObserver implements ObserverInterface
{
    /**
     * @var QueueHelper
     */
    protected QueueHelper $queueHelper;

    /**
     * @var SFMCHelper
     */
    protected SFMCHelper $sfmcHelper;

    /**
     * @param SFMCHelper  $sfmcHelper
     * @param QueueHelper $queueHelper
     */
    public function __construct(
        SFMCHelper  $sfmcHelper,
        QueueHelper $queueHelper
    ) {
        $this->sfmcHelper = $sfmcHelper;
        $this->queueHelper = $queueHelper;
    }

    /**
     * Order save after event handler
     *
     * @param MagentoFrameworkEventObserver $observer
     * @return void
     */
    public function execute(MagentoFrameworkEventObserver $observer)
    {
        $lastOrderId = $observer->getEvent()->getData('order');
        $orderId = $lastOrderId->getId();
        if ($orderId && $this->sfmcHelper->isAutoSyncEnabled()) {
            $this->queueHelper->publishSFMCMessage($orderId, QueueHelper::SFMC_EVENT_ORDER_UPDATE);
        }
    }
}

Unit Test Class

<?php

declare(strict_types=1);

namespace VendorNameModuleNameTestUnitObserver;

use MagentoSalesModelOrder;
use MagentoFrameworkEvent;
use MagentoFrameworkEventObserver;
use VendorNameModuleNameObserverSalesOrderPlacedAfterObserver;
use VendorNameModuleNameHelperConnection as SFMCHelper;
use VendorNameModuleNameHelperQueue as QueueHelper;

class SalesOrderPlacedAfterObserverTest extends PHPUnitFrameworkTestCase
{
    /**
     * @var SalesOrderPlacedAfterObserver
     */
    protected $salesorderplacedafterObserver;

    /**
     * @var SFMCHelper
     */
    protected $sfmcHelper;

    /**
     * @var QueueHelper
     */
    protected $queueHelper;

    /**
     * @var Observer
     */
    protected $observer;

    /**
     * @return void
     */
    public function setUp(): void
    {

        $this->observer = $this->createMock(Observer::class);
        $this->_eventMock = $this->getMockBuilder(Event::class)
            ->addMethods(['getOrder', 'getId'])
            ->disableOriginalConstructor()
            ->getMock();

        $this->observer->expects($this->any())->method('getEvent')->willReturn($this->_eventMock);

        $this->sfmcHelper = $this->createMock(SFMCHelper::class);
        $this->queueHelper = $this->createMock(QueueHelper::class);
        $this->salesorderplacedafterObserver = new SalesOrderPlacedAfterObserver(
            $this->sfmcHelper,
            $this->queueHelper
        );
    }

    /**
     * @return void
     */
    public function testExecute()
    {
        $orderId = '1';

        $orderMock = $this->createPartialMock(
            MagentoSalesModelOrder::class,
            ['getId']
        );
        $this->_eventMock->expects($this->once())->method('getOrder')->willReturn($orderMock);
        $orderMock->expects($this->once())->method('getId')->willReturn($orderId);


        // I assume this value should be true
        // Implement to fit you method return value
        $this->sfmcHelper->expects(self::once())
            ->method('isAutoSyncEnabled')
            ->willReturn(true);

        // Can be useless depend on your method utility
        $this->queueHelper->expects(self::once())
            ->method('publishSFMCMessage')
            ->with($orderId, QueueHelper::SFMC_EVENT_ORDER_UPDATE);

        $this->salesorderplacedafterObserver->execute($this->observer);
    }
}