Salesforce:调用一个方法,并将联系人与一个帐户关联起来,用于顶点测试方法



我写了一个Apex Scheduler,它在员工生日前两天向经理发送电子邮件通知。

我已经在沙箱中测试过了,我已经准备好投入生产了。但是,我的测试方法在获取代码覆盖率方面遇到了问题。

我的Apex Scheduler类使用SOQL语句来识别帐户名为"Our Company"且在2天后有生日的联系人。

我已经在我的测试方法中创建了一个帐户和联系人记录。

我需要将我的帐户和联系人记录链接/关联在一起。(联系人适用于我创建的帐户。我知道这与ID有关。你不能写帐户ID。

我想我需要创建一个帐户变量并将其分配给contactID。。。我尝试过代码示例,但它们不起作用。Salesforce认为我在写联系人ID,但你做不到。具体来说:

 Contact testContact = new Contact();
 testContact.firstName='Jack';
 testContact.lastName='Dell';
 AccountID = testAccount.id;

如何创建帐户变量?

另一个问题是调用我的sendBirthdayEmail();方法。

编写测试Contact.sendBirthdayEmail();不调用我的电子邮件方法。相反,我收到一条错误消息"错误:编译错误:SObject Contact的字段ContactID无效"。

为什么我的测试方法不能识别我的sendBirthdayEmail方法?测试方法不理解我班上的其他方法吗?

global class BirthdayName implements Schedulable{ 
global void execute (SchedulableContext ctx) 
{ 
sendBirthdayEmail(); 
}
public void sendBirthdayEmail()
{
   for(Contact con : [SELECT name, Id, Birthdate FROM Contact WHERE Next_Birthday__c = : system.Today().addDays(2) AND Account.Name = 'Our Company'])
  {
  String conId = con.Id;
  String conName = con.name;
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); 

mail.setTargetObjectId('005J0000000JWYx');
mail.setsubject('Birthday Reminder');
mail.setHtmlBody('This is a scheduler-generated email to notify you that the birthday of Name:  <b>  ' + con.name + '  </b> is in two days. Birthdate of: ' + con.Birthdate + '. Please wish them a happy Birthday.');
mail.setSaveAsActivity(false);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail }); 
}
}
static testMethod void myTestBirthday() {
//create the required test data needed for the test scenario
//In this case, I need to create a new contact, with the account name of Our Company and has a birthday 2 days away
Account testAccount = new Account(name='Our Company');
insert testAccount;

// creating new contact
Contact testContact = new Contact();
testContact.firstName='Jack';
testContact.lastName='Dell';
// TRYING to make this contact associated with the account by setting the account id of      the account I just created to the contact
AccountID = testAccount.id;
 // inserting test contact
insert testContact;
testContact.birthdate=system.Today().addDays(2);
update testContact;
testContact.sendBirthdayEmail();

}

}

请帮帮我,我已经阅读了文档并搜索了留言板,但我仍然被卡住了。谢谢你的帮助!

尝试将testAccount.Id分配给testContact.Account:

testContact.account = testAccount.Id;

而不是AccountID=testAccount.Id;

希望这能有所帮助!

Anup

最新更新