2
votes

I have following class to send email

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 class is fine

but not able to get following test case to complete code coverage in eclipse

@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();
}
}

If i comment out last 3 lines from test case

Following error is coming

SendConfirmationTestCase: Invalid type: SendConfirmation

Thanks in advance for your help..

1

1 Answers

4
votes

Try this, it's testing at 100% for me.

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);
    }
}