2

私は電子メールを送信するために次のクラスを持っています

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

上のクラスは大丈夫です

しかし、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

ご協力いただきありがとうございます..

4

1 に答える 1

4

これを試してみてください。私にとっては 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);
    }
}
于 2012-04-06T13:35:43.873 に答える