You need to sign in to do that
Don't have an account?
Mohmad Sohel
Test class for Controller Extension
Hi All,
Kindly help me on writing test class for below Standard Controller Extension. Currently I am getting 47 % code coverage.
Controller:
public class SpeakerControllerExtension {
public blob picture { get; set; }
public String errorMessage { get; set; }
private final Speaker__c speaker;
private ApexPages.StandardController stdController;
public SpeakerControllerExtension(ApexPages.StandardController stdController) {
this.speaker = (Speaker__c)stdController.getRecord();
this.stdController = stdController;
}
public PageReference save() {
errorMessage = '';
try {
upsert speaker;
if (picture != null) {
Attachment attachment = new Attachment();
attachment.body = picture;
attachment.name = 'speaker_' + speaker.id + '.jpg';
attachment.parentid = speaker.id;
attachment.ContentType = 'application/jpg';
insert attachment;
speaker.Picture_Path__c = '/servlet/servlet.FileDownload?file='
+ attachment.id;
update speaker;
}
return new ApexPages.StandardController(speaker).view();
} catch(System.Exception ex) {
errorMessage = ex.getMessage();
return null;
}
}
}
Test class:
@isTest
public class Test_SpeaketControllerExtension {
static testMethod void testSave(){
Speaker__c sp = new Speaker__c(); // Speaker__c is Standard Controller
insert sp;
ApexPages.StandardController controller = new ApexPages.StandardController(sp);
SpeakerControllerExtension extension = new SpeakerControllerExtension(controller); // controller extension
extension.save();
PageReference pageRef = Page.SpeakerForm; // SpeakerForm is visualforce page
Test.setCurrentPageReference(pageRef);
}
}
Thanks in advance
Kindly help me on writing test class for below Standard Controller Extension. Currently I am getting 47 % code coverage.
Controller:
public class SpeakerControllerExtension {
public blob picture { get; set; }
public String errorMessage { get; set; }
private final Speaker__c speaker;
private ApexPages.StandardController stdController;
public SpeakerControllerExtension(ApexPages.StandardController stdController) {
this.speaker = (Speaker__c)stdController.getRecord();
this.stdController = stdController;
}
public PageReference save() {
errorMessage = '';
try {
upsert speaker;
if (picture != null) {
Attachment attachment = new Attachment();
attachment.body = picture;
attachment.name = 'speaker_' + speaker.id + '.jpg';
attachment.parentid = speaker.id;
attachment.ContentType = 'application/jpg';
insert attachment;
speaker.Picture_Path__c = '/servlet/servlet.FileDownload?file='
+ attachment.id;
update speaker;
}
return new ApexPages.StandardController(speaker).view();
} catch(System.Exception ex) {
errorMessage = ex.getMessage();
return null;
}
}
}
Test class:
@isTest
public class Test_SpeaketControllerExtension {
static testMethod void testSave(){
Speaker__c sp = new Speaker__c(); // Speaker__c is Standard Controller
insert sp;
ApexPages.StandardController controller = new ApexPages.StandardController(sp);
SpeakerControllerExtension extension = new SpeakerControllerExtension(controller); // controller extension
extension.save();
PageReference pageRef = Page.SpeakerForm; // SpeakerForm is visualforce page
Test.setCurrentPageReference(pageRef);
}
}
Thanks in advance
You need to set picture value in your test class, to achieve the test class coverage like below: Let me know, if you need any other help.
Thanks,
Neetu
All Answers
You need to set picture value in your test class, to achieve the test class coverage like below: Let me know, if you need any other help.
Thanks,
Neetu
Its little bit tricky to cover the exception part of code, you can only cover this, if you have a validation rule on speaker, so that you intentionally create such data which throws error while upserting speaker.
Although its not compulsory to cover this part.
Thanks,
Neetu