I've written a test class for order update, though I am stuck at some minor issue which I am unable to get through. My test class looks like:

    @IsTest
    public class TestCreateMyOrder {
    	static testMethod void validateCreateMyOrder() {
          
            // for pricebook and product entry
            Pricebook2 standardPricebook = new Pricebook2(
                Id = Test.getStandardPricebookId(),
                IsActive = true
            );
            update standardPricebook;
            standardPricebook = [SELECT IsStandard FROM Pricebook2 WHERE Id = :standardPricebook.Id];
            Product2 p = new Product2(Name='My Product', IsActive = true);
            insert p;
            PricebookEntry pbe = new PricebookEntry(UnitPrice=10.0,	Product2Id=p.Id, Pricebook2Id=standardPricebook.Id, IsActive=true);
            insert pbe;
            
            //new order entry
            Order ord = new Order(
                Name='Test Order',
                AccountId='0018A00000HWF1YQAX',// this is an existing account id
                EffectiveDate=System.today(),
                Status='Draft',
                Pricebook2Id = standardPricebook.Id
            );
            insert ord;
            
            //creating order item
            OrderItem oi = new OrderItem(
                Product2Id=p.Id,
                Quantity=1.0,
                OrderId=ord.Id,
                UnitPrice=10.0
            );
            insert oi;
            
            //update order status
            ord.Status='Activated';
            update ord;
        }
    }
Here, order item insertion is necessary as without any product in an order, the order status can not be set to `activated`. The error I am getting here is an exception thrown at the time on `insert oi;` : 

> System.DmlException: Insert failed. First exception on row 0; first
> error: REQUIRED_FIELD_MISSING, Required fields are missing:
> [PricebookEntryId]: [PricebookEntryId]

I hope to get some understanding of the error here