function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
:) :) :) :) :):) :) :) :) :) 

How to Create Test Class for Webservice method

I was trying to create test class and I am getting an error saying : Methods defined as testmethod do not support web service callouts. I am pasting my APEX Code below please help me out from here.

global class sendToEncompass{
  
  // @future(callout=true)
  public String EncompassMSG;
   WebService static String basicCallout(String OppID){
  
     opportunity opp = [select id, Loan_Number__c,Borrower_SSN__c, Co_Borrower_First_Name__c, Co_Borrower_Last_Name__c, Co_Borrower_SSN__c, Borrower_Email__c, Borrower_First_Name__c, Borrower_Last_Name__c, owner.email, Subject_Property_Street__c, Subject_Property_City__c, Subject_Property_Zip__c, Processing_Notes__c from Opportunity where id =:OppID];
    
     HttpRequest req = new HttpRequest();
     req.setClientCertificateName('websvcs_cert');
     req.setEndpoint('https://api.XXXYYY.com/eupdate/EUpdateService.svc/insertUpdateLoans');
     req.setMethod('POST');
     req.setHeader('Content-Type', 'application/xml');
     req.setTimeout(120000);
     req.setBody(
     '<LoanEntries xmlns="http://schemas.XXXYYY.org/2001/07/EncompassService">' +
  '<LoanData>' +
  '<LoanField>' +
      '<field_id>CX.SALESFORCELINKIDATE</field_id>' +
      '<field_value>'+System.now().format('MM/dd/yyyy')+'</field_value>' +
    '</LoanField>' +
   '<LoanField>' +
      '<field_id>LoanOfficer</field_id>' +
      '<field_value>'+opp.owner.email+'</field_value>' +
    '</LoanField>' +
    '<LoanField>' +
      '<field_id>36</field_id>' +
      '<field_value>'+opp.Borrower_First_Name__c+'</field_value>' +
    '</LoanField>' +
    '<LoanField>' +
      '<field_id>37</field_id>' + 
      '<field_value>'+opp.Borrower_Last_Name__c+'</field_value>' +
    '</LoanField>' +
    '<LoanField>' +
      '<field_id>11</field_id>' + 
      '<field_value>'+opp.Subject_Property_Street__c+'</field_value>' +
    '</LoanField>' +
    '<LoanField>' +
      '<field_id>12</field_id>' + 
      '<field_value>'+opp.Subject_Property_City__c+'</field_value>' +
    '</LoanField>' +
    '<LoanField>' +
      '<field_id>15</field_id>' + 
      '<field_value>'+opp.Subject_Property_Zip__c+'</field_value>' +
    '</LoanField>' +
    '<LoanField>' +
      '<field_id>364</field_id>' + 
      '<field_value>'+opp.Loan_Number__c+'</field_value>' +
    '</LoanField>' +
    '<LoanField>' +
      '<field_id>65</field_id>' + 
      '<field_value>'+opp.Borrower_SSN__c+'</field_value>' +
    '</LoanField>' +
    '<LoanField>' +
      '<field_id>68</field_id>' + 
      '<field_value>'+opp.Co_Borrower_First_Name__c+'</field_value>' +
    '</LoanField>' +
    '<LoanField>' +
      '<field_id>69</field_id>' + 
      '<field_value>'+opp.Co_Borrower_Last_Name__c+'</field_value>' +
    '</LoanField>' +
    '<LoanField>' +
      '<field_id>97</field_id>' + 
      '<field_value>'+opp.Co_Borrower_SSN__c+'</field_value>' +
    '</LoanField>' +
    '<LoanField>' +
      '<field_id>1240</field_id>' + 
      '<field_value>'+opp.Borrower_Email__c+'</field_value>' +
    '</LoanField>' +
  '</LoanData>' +
'</LoanEntries>'
     );

    
     //req.setEndpoint('https://api.XXXYYY.com/eupdate/EUpdateService.svc/getFieldMappings');
     //req.setMethod('GET');
 
     Http http = new Http();
     try{
     HTTPResponse res = http.send(req);
     System.debug(res.getBody());
     String loanID = res.getBody();
     if(loanID.contains('Created')){
     loanID = loanID.split(':', 14)[2];
     loanID = (loanID.split('<',39)[0]).trim();
     system.debug(loanID);
     opp.GUID__c = loanID;
   //  EncompassMSG = 'Encompass loan record is successfully created, Click ok to continue';
     }
     else{
      loanID = loanID.split(':', 14)[2];
      loanID = (loanID.split('<',39)[0]).trim();
      system.debug(loanID);
      opp.GUID__c = 'Error: ' +loanID;
      //EncompassMSG = 'Error is occured while creating Encompass record, please try again or contact support';
     }
    
     update opp;
     if((opp.GUID__c).contains('Error')){
     return 'Error is occured while creating Encompass record, please try again or contact support';
     }else{
     return 'Encompass loan record is successfully created';
     }
   }
   catch(System.CalloutException e){
    return 'Request time is out, Please try again';
   }
   }
}

JimRaeJimRae
You can't use a webservice callout from a test method, so you need to create a Mock class that will simulate what you webservice should get.
The documentation for this process is here:
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_callouts_wsdl2apex_testing.htm
:) :) :) :) :):) :) :) :) :)
I am trying to simulate my webservice but still not able to get class cover not even 1%. Do you know what is causing that? Thanks!