
global static boolean run = true;
public static boolean runOnce(){
if(run){
run=false;
return true;
}else{
return run;
}
}
}Test Class :@isTest(SeeAllData = false)private class Test_UpdateStageTrigger{public static void resetRunOnceFlag() {checkRecursive.run = TRUE;}static testMethod void UnitTestForException(){//checkRecursive.run = false;Account ac = new Account ();ac.name = 'Test Account';ac.Status__c = 'Active';ac.Channel__c = 'Bank';insert ac;User u = [ select Id from User where id =: UserInfo.getUserId() ];Territory__c Tr = new Territory__c();Tr.wholesaler__c = u.id;Tr.name = 'Test Territory';Tr.Division__c = 'East';Tr.Type__c = 'ForeCare';insert Tr;Contact c = new Contact();c.Lastname = 'test';c.Accountid = ac.id;c.MailingState = 'CA';c.MailingCity = 'SAN DIEGO';c.MailingPostalCode = '92121';c.Forecare_Territory__c = Tr.id;insert c;List<Opportunity> Olist = [select id,name,stagename,closedate from Opportunity where Contact_Name__r.id =:c.id];Opportunity O = new Opportunity();O.Name = 'Test Opp';O.AccountId=ac.Id;O.StageName='1-Discovery';O.CloseDate=Date.Today();insert O;// System.assert(checkRecursive.runOnce(), 'Recursion check failed. Please review checkRecursive recursion logic');O.StageName = '5-Paperwork/Ticketing incoming';Update O;Opportunity O1 = new Opportunity();O1.Name = 'Test Opp1';O1.AccountId=ac.Id;O1.StageName='2-Hypo / Illustration delivery';O1.CloseDate=Date.Today()+1;insert O1; //checkRecursive.run = false;O1.StageName = '5-Paperwork/Ticketing incoming';Update O1;Opportunity O2 = new Opportunity();O2.Name = 'Test Opp2';O2.AccountId=ac.Id;O2.StageName='3-Rep follow up - VM';O2.CloseDate=Date.Today()+10;insert O2; //checkRecursive.run = false; O2.StageName = '5-Paperwork/Ticketing incoming';Update O2;}}
1 resposta
You can write simply that toggel the value of boolean. it is easy to access in test class in single execution.