function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Javier EsquivelJavier Esquivel 

can you help me with test class for a email Messaging

im trying to do the test class for this code

public class Claseprogramadausuario {
    
public static void obtenerinfo(){

List<User> nlist = [SELECT Id, Username, FirstName, LastName, EmployeeNumber, UserRole.Name, Profile.Name, CreatedDate, LastModifiedDate, LastLoginDate, isActive FROM User WHERE Profile.Name != 'SelfService'];
string header = 'Id, Username , FirstName, LastName, EmployeeNumber, UserRole.Name,  Profile.Name, Created Date, LastModifiedDate, LastLoginDate, isActive \n';
string finalstr = header ;
for(User u: nlist)
{

       string recordString = u.id+','+u.Username +',' + u.FirstName +','+ u.LastName +','+ u.EmployeeNumber+','+ u.UserRole.name +','+ u.profile.name +','+ u.CreatedDate +','+ u.LastModifiedDate +','+ u.LastLoginDate +','+ u.IsActive +'\n';

       finalstr = finalstr +recordString;
}

Messaging.EmailFileAttachment csvAttc = new Messaging.EmailFileAttachment();
blob csvBlob = Blob.valueOf(finalstr);
string csvname= 'Userinfo.csv';
csvAttc.setFileName(csvname);
csvAttc.setBody(csvBlob);
Messaging.SingleEmailMessage correo = new Messaging.SingleEmailMessage();
correo.toAddresses = new String[] {'javierandoni@gmail.com', 'dlramirez@izzi.mx'};
correo.subject = 'Clase programada test';
correo.plainTextBody = 'Clase programada test';
Messaging.SingleEmailMessage[] correos =   new List<Messaging.SingleEmailMessage> {correo};
correo.setPlainTextBody('Account CSV ');
correo.setFileAttachments(new Messaging.EmailFileAttachment[]{csvAttc});
Messaging.SendEmailResult[] results = Messaging.sendEmail(correos);

if (results[0].success) 
{
System.debug('The email was sent successfully.');
} else 
{
System.debug('The email failed to send: ' + results[0].errors[0].message);
}
}
}

And the test class im trying to do is this

// Test Class
@IsTest
Public class ClaseprogramadausuarioTest {
    @isTest static void testenviomail(){
        string pri= Claseprogramadausuario.obtenerinfo();
        System.assertEquals('The email was sent successfully.', pri);
    }
}

but i get this message: Illegal assignment from void to String.
 
Best Answer chosen by Javier Esquivel
Maharajan CMaharajan C
Hi Javier,

You actual method don't have any return data it's void method so you are getting this error:
string pri= Claseprogramadausuario.obtenerinfo();   ==>  Claseprogramadausuario.obtenerinfo(); 

Please try the below test class:
 
@isTest
public class ClaseprogramadausuarioTest {
    @isTest static void testenviomail(){
        String contactEmail = 'Javier123@gmail.com';
        Id AdminProfileID = [Select Id From profile Where Name = 'System Administrator' Limit 1].Id;  
        User u = new User( email=contactEmail, profileid = AdminProfileID , UserName='Javier789@gmail.com',
                          alias='JaviEs',
                          TimeZoneSidKey='America/New_York',
                          LocaleSidKey='en_US',
                          EmailEncodingKey='ISO-8859-1',
                          LanguageLocaleKey='en_US',
                          FirstName = 'Anu',
                          LastName = 'Singh',
                          IsActive = true,
                          EmployeeNumber = '12345'
                         );
        
        insert u;
        Test.startTest();
        Claseprogramadausuario.obtenerinfo();
        Test.stopTest();
    }
}

Thanks,
Maharajan.C

All Answers

Maharajan CMaharajan C
Hi Javier,

You actual method don't have any return data it's void method so you are getting this error:
string pri= Claseprogramadausuario.obtenerinfo();   ==>  Claseprogramadausuario.obtenerinfo(); 

Please try the below test class:
 
@isTest
public class ClaseprogramadausuarioTest {
    @isTest static void testenviomail(){
        String contactEmail = 'Javier123@gmail.com';
        Id AdminProfileID = [Select Id From profile Where Name = 'System Administrator' Limit 1].Id;  
        User u = new User( email=contactEmail, profileid = AdminProfileID , UserName='Javier789@gmail.com',
                          alias='JaviEs',
                          TimeZoneSidKey='America/New_York',
                          LocaleSidKey='en_US',
                          EmailEncodingKey='ISO-8859-1',
                          LanguageLocaleKey='en_US',
                          FirstName = 'Anu',
                          LastName = 'Singh',
                          IsActive = true,
                          EmployeeNumber = '12345'
                         );
        
        insert u;
        Test.startTest();
        Claseprogramadausuario.obtenerinfo();
        Test.stopTest();
    }
}

Thanks,
Maharajan.C
This was selected as the best answer
Javier EsquivelJavier Esquivel
thanks, Maharajan.C it worked.