2012-04-06 8 views
2

ich folgende Klasse habe E-MailApex Testfall für E-Mail-Klasse

global class SendConfirmation { 

public SendConfirmation(ApexPages.StandardController controller) 
{ 
} 

Webservice static void SendEmail(string contactId,string oppId) 
{ 
    Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); 
    mail.setTargetObjectId(contactId); 
    mail.setWhatId(oppId); 
    mail.setTemplateId('00Xd0000000PFaY'); 
    Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail }); 
} 
} 

ablove Klasse zu senden ist in Ordnung

aber nicht in der Lage zu folgendem Testfall zu erhalten Code-Coverage in Eclipse zu vervollständigen

@isTest 
private class SendConfirmationTestCase { 
private static testMethod void myUnitTest() { 
    Contact con = new Contact(); 
    con.FirstName = 'Anil'; 
    con.LastName = 'Dutt'; 
    con.Email = '[email protected]'; 
    insert con; 


    Opportunity oppNew = new Opportunity(); 
    oppNew.Name = 'Test Opp'; 
    oppNew.StageName = 'Ticketing'; 
    oppNew.CloseDate = System.now().date(); 
    insert oppNew; 


    //ApexPages.StandardController sc = new ApexPages.StandardController(con); 
    //SendConfirmation sc1=new SendConfirmation (sc); 
    //sc1.SendEmail(); 
} 
} 

Wenn ich die letzten 3 Zeilen aus dem Testfall

auskommentieren, kommt der folgende Fehler

SendConfirmationTestCase: ungültiger Typ: SendConfirmation

Vielen Dank im Voraus für Ihre Hilfe ..

Antwort

4

die Sie interessieren, dann ist es Tests bei 100% für mich.

global class SendConfirmation 
{ 
    public SendConfirmation(ApexPages.StandardController controller) 
    { 
    } 

    Webservice static void SendEmail(string contactId,string oppId) 
    { 
     Messaging.SingleEmailMessage mail 
      = new Messaging.SingleEmailMessage(); 
     mail.setTargetObjectId(contactId); 
     mail.setWhatId(oppId); 
     // assuming this Template ID exists in your org 
     mail.setTemplateId('00Xd0000000PFaY'); 
     Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail }); 
    } 

    private static testMethod void myUnitTest() 
    { 
     Contact con = new Contact(); 
     con.FirstName = 'Anil'; 
     con.LastName = 'Dutt'; 
     con.Email = '[email protected]'; 
     insert con; 

     Opportunity oppNew = new Opportunity(); 
     oppNew.Name = 'Test Opp'; 
     oppNew.StageName = 'Ticketing'; 
     oppNew.CloseDate = System.now().date(); 
     insert oppNew; 

     ApexPages.StandardController sc 
      = new ApexPages.StandardController(con); 
     SendConfirmation sc1=new SendConfirmation (sc); // test constructor 

     // Not: sc1.SendEmail(); 
     // Because method is a webservice in a global class 
     SendConfirmation.SendEmail(con.Id,oppNew.Id); 
    } 
} 
+0

danke viel @matthew ... vielleicht ist Ihr Punkt auch richtig, aber eine statische Methode ist immer Aufruf mit Klassennamen. Also rufe ich die SendEmail-Methode mit dem Klassennamen SendConfirmationEmail auf. SendEmail (con.id, oppNew.id); Anstatt die with-Instanz der Klasse aufzurufen. –