【问题标题】:Apex Test case for Email Class电子邮件类的 Apex 测试用例
【发布时间】:2012-04-06 04:45:27
【问题描述】:

我有以下课程可以发送电子邮件

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 课很好

但无法获得以下测试用例以在 eclipse 中完成代码覆盖

@isTest
private class SendConfirmationTestCase {
private static testMethod void myUnitTest() {
    Contact con =  new Contact();
    con.FirstName = 'Anil';
    con.LastName = 'Dutt';
    con.Email = 'anil@swiftsetup.com';
    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();
}
}

如果我从测试用例中注释掉最后 3 行

以下错误即将到来

SendConfirmationTestCase:无效类型:SendConfirmation

提前感谢您的帮助..

【问题讨论】:

    标签: salesforce apex-code visualforce


    【解决方案1】:

    试试这个,它对我来说是 100% 的测试。

    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 = 'anil@swiftsetup.com';
            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);
        }
    }
    

    【讨论】:

    • 非常感谢@matthew ...您的观点可能也是正确的,但是始终使用类名调用静态方法。所以我用类名(如 SendConfirmationEmail)调用 SendEmail 方法。发送电子邮件(con.id,oppNew.id);而不是调用 with 类的实例。
    猜你喜欢
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多