Я написал триггер для отправки электронной почты определенным группам электронной почты всякий раз, когда создается запись «Идея». Я должен отправлять электронные письма в группы на основе комбинации двух полей selectlist с несколькими выборами, поэтому я добавил эти комбинации в «Пользовательские данные настройки» и использовал их для получения идентификаторов электронной почты. Ниже мой код.Пожалуйста, помогите мне в написании тестового класса для моего триггеркласса
Public Class IdeaTriggerOperations1
{
Public Static Void NotifyBUonNewDiscussion1(List<Idea> IdeaIds)
{
Set<String> CategoryNameSet = new Set<String>();
Set<String> ProductNameSet = new Set<String>();
//Set and clear emailAddresses
String[] emailAddressess = new String[40];
emailAddressess.clear();
//Set Messaging
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
Messaging.reserveSingleEmailCapacity(1);
//Get Email Template Id
EmailTemplate et = [SELECT Id FROM EmailTemplate WHERE developerName = 'Idea_New_Discussion_Posted_BU'];
For(Idea I : IdeaIds)
{
String completeEmailList = '';
for(String str : I.Categories.split(';'))
{
CategoryNameSet.add(str);
system.debug('-----------CategoryNameSet--------'+CategoryNameSet);
}
If(I.Product__c != NULL)
{
for(String str1 : I.Product__c.split(';'))
{
ProductNameSet.add(str1);
system.debug('-----------ProductNameSet--------'+ProductNameSet);
}
}
Else{
ProductNameSet = NULL; }
// Generating Email List values for BU ...
If(i.Include_BU__c == True)
{
If(!ProductNameSet.contains('Automata') && !ProductNameSet.contains('DRAM') && !ProductNameSet.contains('eMCP') && !ProductNameSet.contains('eMMC') && !ProductNameSet.contains('HMC') && !ProductNameSet.contains('MCP') && !ProductNameSet.contains('NAND') && !ProductNameSet.contains('NOR') && !ProductNameSet.contains('SSD') && !ProductNameSet.contains('N/A'))
{
Idea_Custom_Setting__c nc = Idea_Custom_Setting__c.getValues('Product All');
completeEmailList += nc.BU_Email_Id__c+ ';' ;
}
List<Idea_Custom_Setting__c> IdeaEmails = Idea_Custom_Setting__c.getall().values();
for(Idea_Custom_Setting__c m : IdeaEmails)
{
If(CategoryNameSet.contains(m.Category__c) && (ProductNameSet.contains(m.Product__c)||ProductNameSet==NULL))
{
completeEmailList += m.BU_Email_Id__c + ';' ;
}
If(CategoryNameSet.contains('Automotive') || CategoryNameSet.contains('Connected Home') || CategoryNameSet.contains('Consumer') || CategoryNameSet.contains('IMM'))
If(ProductNameSet.contains(m.Combined_Category__c))
{
completeEmailList += m.BU_Email_Id__c + ';' ;
}
}
}//End of first IF statement
// Generating Email List values for SME ...
If(i.LastModifiedDate == i.CreatedDate)
{
List<Idea_Custom_Setting_For_SME__c> SMECustSet = Idea_Custom_Setting_For_SME__c.getall().values();
for(Idea_Custom_Setting_For_SME__c N : SMECustSet)
{
If(CategoryNameSet.contains(N.Category_SME__c)){
If(ProductNameSet.contains('N/A'))
{
completeEmailList += N.SME_Email_Id__c + ';' ;
} }
If(CategoryNameSet!=NULL && ProductNameSet.contains(N.Product_SME__c))
{
completeEmailList += N.SME_Email_Id__c + ';' ;
}
If(!ProductNameSet.contains('Automata') && !ProductNameSet.contains('DRAM') && !ProductNameSet.contains('eMCP') && !ProductNameSet.contains('eMMC') && !ProductNameSet.contains('HMC') && !ProductNameSet.contains('MCP') && !ProductNameSet.contains('NAND') && !ProductNameSet.contains('NOR') && !ProductNameSet.contains('SSD') && !ProductNameSet.contains('N/A')){
If(ProductNameSet.contains(N.Special_Value__c))
{
completeEmailList += N.SME_Email_Id__c + ';' ;
}}
}
}
system.debug('-----------completeEmailList--------'+completeEmailList);
for(String str2 : completeEmailList.split(';'))
{
emailAddressess.add(str2);
}
//Set Message Properties
mail.setTargetObjectId(i.CreatedById);
mail.setWhatId(i.Id);
mail.setTemplateId(et.Id);
mail.setSenderDisplayName('SFDC Technical Discussion');
mail.setToAddresses(emailAddressess);
mail.setUseSignature(false);
mail.setBccSender(false);
mail.setSaveAsActivity(false);
// Update the Post to set the SME Notified field to TRUE
If(i.Include_BU__c == True){
List<Idea> nIdea = [SELECT Id, BU_Notified__c FROM Idea WHERE Id IN: Trigger.newMap.keySet()];
for (Idea o :nIdea){
o.BU_Notified__c = True;
}
update nIdea; }
}
// Send the email
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}}
Когда я создаю запись Идея с моим тестовым классом я всегда получаю ошибку говоря:
System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, IdeaTrigger1: execution of AfterInsert
caused by: System.EmailException: SendEmail failed. First exception on row 0; first error: INVALID_EMAIL_ADDRESS, Invalid to address : : []
Class.IdeaTriggerOperations1.NotifyBUonNewDiscussion1: line 114, column 1 Trigger.IdeaTrigger1: line 9, column 1: []
Это недопустимый код Java. Даже не отдаленно. –
Привет, Стивен, это не код Java. Это код вершины Salesforce. –
Я вижу ... некоторые «полезные» люди отметили его как Java, когда это не так. Это помогло бы, если бы вы предоставили полезные теги в первую очередь –