我写了一份Apex计划程序,在员工生日前2天向经理发送电子邮件通知。
我已经在沙盒中测试了它,我已准备好进入生产阶段。但是,我在使用我的测试方法获取代码覆盖时遇到了问题。
我的Apex计划程序类使用SOQL语句来识别帐户名称“我们公司”的联系人,并在2天内生日。
我已在我的测试方法中创建了一个帐户和联系人记录。
我需要将我的帐户和联系人记录链接/关联在一起。 (该联系人适用于我创建的帐户。我知道它与ID有关。您无法编写accountId。
我认为我需要创建一个帐户变量并将其分配给contactID ...我已尝试过代码示例但它们无法正常工作。 Salesforce认为我正在尝试编写您不能做的联系人ID。具体是:
Contact testContact = new Contact();
testContact.firstName='Jack';
testContact.lastName='Dell';
AccountID = testAccount.id;
如何创建帐户变量?
另一个问题是调用我的sendBirthdayEmail();
方法。
写testContact.sendBirthdayEmail();不会调用我的电子邮件方法。相反,我收到一条错误消息“错误:编译错误:SObject联系人的无效字段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();
}
}
请帮助我,我已经阅读了文档并搜索了留言板,但我仍然卡住了。谢谢你的帮助!
答案 0 :(得分:1)
尝试将testAccount.Id分配给testContact.Account:
testContact.account = testAccount.Id;
而不是
AccountID = testAccount.Id;
希望这有帮助!
阿努普