+ Start a Discussion
Abhishek Pal 33Abhishek Pal 33 

How to test object id in salesforce.

Hello Everyone,

How do I get object id inserted through test cases in salesforce.

Code:-
//Method which i need to test 

 public static Product__c addProduct(Product__c product){
       
          Product__c productToPersist = product;
        
        Product__c  insertedProduct;
        
       
            try{
               
                insert productToPersist;
                insertedProduct=[select Id, Short_Material_Number__c from Product__c where UPC_Code_for_Consumer_Units__c = :productToPersist.Short_Material_Number__c];  // When I am calling this method I am getting System.QueryException: List has no rows for assignment to SObject in test method.
}


//This is my testcase for above method


@isTest static void save()
  {
         
Product__c insertedProduct;
// here I am inserting addProduct through json.
insertedProduct=MultiUPCAdderUtil.addProduct(addProduct);  
}

Note: As per my understanding the data is not persisted in test case then how do I get the object id from the object when I am trying to insert in salesforce. As we can see that the reason why I am getting this exception because it is returning 0 rows and unable to persist the data and cdnt get the object id also.


 
Daniel_TeferaDaniel_Tefera
Before inserting check if productToPersist.Short_Material_Number__c has a value. You can do that in two ways.
  1. Use a System.debug and check the log if there is a value.
  2. You can also do an inster if only productToPersist.Short_Material_Number__c have a value. Use if stamtement in the try block before the insert DML.
My 2 cnets - It seems that you two fields for same value. UPC_Code_for_Consumer_Units__c and Short_Material_Number__c. If they are not the same value, and only carries partial similarities then use methods likes contains(substring).