Writing Code coverage to Webservice Classes:-
Steps in Service Org:-
1. Write a webservice class.
global class AccountService{
webservice static void AccountInsert(String accName,String ph){
Account objA = new Account();
objA.Name = accName;
objA.Phone = ph;
Insert objA;
}
}
2. Generate a WSDL
save the file with .wsdl extension (ex: AccountService.wsdl)
Steps in Client Org
1. Generate an apex class for the above WSDL.
Below is the generated apex class:
//Generated by wsdl2apex
public class soapSforceComSchemasClassAccountser {
public class LogInfo {
public String category;
public String level;
private String[] category_type_info = new String[]{'category','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] level_type_info = new String[]{'level','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'category','level'};
}
public class AllowFieldTruncationHeader_element {
public Boolean allowFieldTruncation;
private String[] allowFieldTruncation_type_info = new String[]{'allowFieldTruncation','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'allowFieldTruncation'};
}
public class DebuggingHeader_element {
public soapSforceComSchemasClassAccountser.LogInfo[] categories;
public String debugLevel;
private String[] categories_type_info = new String[]{'categories','http://soap.sforce.com/schemas/class/AccountService',null,'0','-1','false'};
private String[] debugLevel_type_info = new String[]{'debugLevel','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'categories','debugLevel'};
}
public class CallOptions_element {
public String client;
private String[] client_type_info = new String[]{'client','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'client'};
}
public class AccountInsert_element {
public String accName;
public String ph;
private String[] accName_type_info = new String[]{'accName','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','true'};
private String[] ph_type_info = new String[]{'ph','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','true'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'accName','ph'};
}
public class location {
public Double latitude;
public Double longitude;
private String[] latitude_type_info = new String[]{'latitude','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] longitude_type_info = new String[]{'longitude','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'latitude','longitude'};
}
public class address {
public String city;
public String country;
public String countryCode;
public String postalCode;
public String state;
public String stateCode;
public String street;
private String[] city_type_info = new String[]{'city','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] country_type_info = new String[]{'country','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] countryCode_type_info = new String[]{'countryCode','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] postalCode_type_info = new String[]{'postalCode','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] state_type_info = new String[]{'state','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] stateCode_type_info = new String[]{'stateCode','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] street_type_info = new String[]{'street','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'city','country','countryCode','postalCode','state','stateCode','street'};
}
public class SessionHeader_element {
public String sessionId;
private String[] sessionId_type_info = new String[]{'sessionId','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'sessionId'};
}
public class AccountInsertResponse_element {
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{};
}
public class DebuggingInfo_element {
public String debugLog;
private String[] debugLog_type_info = new String[]{'debugLog','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'debugLog'};
}
public class AccountService {
public String endpoint_x = 'https://ap2.salesforce.com/services/Soap/class/AccountService';
public Map<String,String> inputHttpHeaders_x;
public Map<String,String> outputHttpHeaders_x;
public String clientCertName_x;
public String clientCert_x;
public String clientCertPasswd_x;
public Integer timeout_x;
public soapSforceComSchemasClassAccountser.DebuggingInfo_element DebuggingInfo;
public soapSforceComSchemasClassAccountser.AllowFieldTruncationHeader_element AllowFieldTruncationHeader;
public soapSforceComSchemasClassAccountser.DebuggingHeader_element DebuggingHeader;
public soapSforceComSchemasClassAccountser.CallOptions_element CallOptions;
public soapSforceComSchemasClassAccountser.SessionHeader_element SessionHeader;
private String DebuggingInfo_hns = 'DebuggingInfo=http://soap.sforce.com/schemas/class/AccountService';
private String AllowFieldTruncationHeader_hns = 'AllowFieldTruncationHeader=http://soap.sforce.com/schemas/class/AccountService';
private String DebuggingHeader_hns = 'DebuggingHeader=http://soap.sforce.com/schemas/class/AccountService';
private String CallOptions_hns = 'CallOptions=http://soap.sforce.com/schemas/class/AccountService';
private String SessionHeader_hns = 'SessionHeader=http://soap.sforce.com/schemas/class/AccountService';
private String[] ns_map_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService', 'soapSforceComSchemasClassAccountser'};
public void AccountInsert(String accName,String ph) {
soapSforceComSchemasClassAccountser.AccountInsert_element request_x = new soapSforceComSchemasClassAccountser.AccountInsert_element();
request_x.accName = accName;
request_x.ph = ph;
soapSforceComSchemasClassAccountser.AccountInsertResponse_element response_x;
Map<String, soapSforceComSchemasClassAccountser.AccountInsertResponse_element> response_map_x = new Map<String, soapSforceComSchemasClassAccountser.AccountInsertResponse_element>();
response_map_x.put('response_x', response_x);
WebServiceCallout.invoke(
this,
request_x,
response_map_x,
new String[]{endpoint_x,
'',
'http://soap.sforce.com/schemas/class/AccountService',
'AccountInsert',
'http://soap.sforce.com/schemas/class/AccountService',
'AccountInsertResponse',
'soapSforceComSchemasClassAccountser.AccountInsertResponse_element'}
);
response_x = response_map_x.get('response_x');
}
}
}
Write a WebServiceMock Class
Test Class:
@isTest
private class soapSforceComSchemasClassAccountserTest {
static testMethod void myUnitTest() {
test.startTest();
soapSforceComSchemasClassAccountser.LogInfo objS1 = new soapSforceComSchemasClassAccountser.LogInfo();
soapSforceComSchemasClassAccountser.AllowFieldTruncationHeader_element objS2 = new soapSforceComSchemasClassAccountser.AllowFieldTruncationHeader_element();
soapSforceComSchemasClassAccountser.DebuggingHeader_element objS3 = new soapSforceComSchemasClassAccountser.DebuggingHeader_element();
soapSforceComSchemasClassAccountser.CallOptions_element objS4 = new soapSforceComSchemasClassAccountser.CallOptions_element();
soapSforceComSchemasClassAccountser.AccountInsert_element objS5 = new soapSforceComSchemasClassAccountser.AccountInsert_element();
soapSforceComSchemasClassAccountser.location objS6 = new soapSforceComSchemasClassAccountser.location();
soapSforceComSchemasClassAccountser.address objS7 = new soapSforceComSchemasClassAccountser.address();
soapSforceComSchemasClassAccountser.SessionHeader_element objS8 = new soapSforceComSchemasClassAccountser.SessionHeader_element();
soapSforceComSchemasClassAccountser.AccountInsertResponse_element objS9 = new soapSforceComSchemasClassAccountser.AccountInsertResponse_element();
soapSforceComSchemasClassAccountser.DebuggingInfo_element objS10 = new soapSforceComSchemasClassAccountser.DebuggingInfo_element();
Test.setMock(WebServiceMock.class, new MockClass());
soapSforceComSchemasClassAccountser.AccountService objS11 = new soapSforceComSchemasClassAccountser.AccountService ();
objS11.AccountInsert('test', '1234567890');
test.stopTest();
}
}
click on "Run Test" and check the code coverage of "soapSforceComSchemasClassAccountser".
Steps in Service Org:-
1. Write a webservice class.
global class AccountService{
webservice static void AccountInsert(String accName,String ph){
Account objA = new Account();
objA.Name = accName;
objA.Phone = ph;
Insert objA;
}
}
2. Generate a WSDL
save the file with .wsdl extension (ex: AccountService.wsdl)
Steps in Client Org
1. Generate an apex class for the above WSDL.
Below is the generated apex class:
//Generated by wsdl2apex
public class soapSforceComSchemasClassAccountser {
public class LogInfo {
public String category;
public String level;
private String[] category_type_info = new String[]{'category','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] level_type_info = new String[]{'level','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'category','level'};
}
public class AllowFieldTruncationHeader_element {
public Boolean allowFieldTruncation;
private String[] allowFieldTruncation_type_info = new String[]{'allowFieldTruncation','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'allowFieldTruncation'};
}
public class DebuggingHeader_element {
public soapSforceComSchemasClassAccountser.LogInfo[] categories;
public String debugLevel;
private String[] categories_type_info = new String[]{'categories','http://soap.sforce.com/schemas/class/AccountService',null,'0','-1','false'};
private String[] debugLevel_type_info = new String[]{'debugLevel','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'categories','debugLevel'};
}
public class CallOptions_element {
public String client;
private String[] client_type_info = new String[]{'client','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'client'};
}
public class AccountInsert_element {
public String accName;
public String ph;
private String[] accName_type_info = new String[]{'accName','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','true'};
private String[] ph_type_info = new String[]{'ph','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','true'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'accName','ph'};
}
public class location {
public Double latitude;
public Double longitude;
private String[] latitude_type_info = new String[]{'latitude','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] longitude_type_info = new String[]{'longitude','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'latitude','longitude'};
}
public class address {
public String city;
public String country;
public String countryCode;
public String postalCode;
public String state;
public String stateCode;
public String street;
private String[] city_type_info = new String[]{'city','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] country_type_info = new String[]{'country','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] countryCode_type_info = new String[]{'countryCode','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] postalCode_type_info = new String[]{'postalCode','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] state_type_info = new String[]{'state','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] stateCode_type_info = new String[]{'stateCode','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] street_type_info = new String[]{'street','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'city','country','countryCode','postalCode','state','stateCode','street'};
}
public class SessionHeader_element {
public String sessionId;
private String[] sessionId_type_info = new String[]{'sessionId','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'sessionId'};
}
public class AccountInsertResponse_element {
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{};
}
public class DebuggingInfo_element {
public String debugLog;
private String[] debugLog_type_info = new String[]{'debugLog','http://soap.sforce.com/schemas/class/AccountService',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService','true','false'};
private String[] field_order_type_info = new String[]{'debugLog'};
}
public class AccountService {
public String endpoint_x = 'https://ap2.salesforce.com/services/Soap/class/AccountService';
public Map<String,String> inputHttpHeaders_x;
public Map<String,String> outputHttpHeaders_x;
public String clientCertName_x;
public String clientCert_x;
public String clientCertPasswd_x;
public Integer timeout_x;
public soapSforceComSchemasClassAccountser.DebuggingInfo_element DebuggingInfo;
public soapSforceComSchemasClassAccountser.AllowFieldTruncationHeader_element AllowFieldTruncationHeader;
public soapSforceComSchemasClassAccountser.DebuggingHeader_element DebuggingHeader;
public soapSforceComSchemasClassAccountser.CallOptions_element CallOptions;
public soapSforceComSchemasClassAccountser.SessionHeader_element SessionHeader;
private String DebuggingInfo_hns = 'DebuggingInfo=http://soap.sforce.com/schemas/class/AccountService';
private String AllowFieldTruncationHeader_hns = 'AllowFieldTruncationHeader=http://soap.sforce.com/schemas/class/AccountService';
private String DebuggingHeader_hns = 'DebuggingHeader=http://soap.sforce.com/schemas/class/AccountService';
private String CallOptions_hns = 'CallOptions=http://soap.sforce.com/schemas/class/AccountService';
private String SessionHeader_hns = 'SessionHeader=http://soap.sforce.com/schemas/class/AccountService';
private String[] ns_map_type_info = new String[]{'http://soap.sforce.com/schemas/class/AccountService', 'soapSforceComSchemasClassAccountser'};
public void AccountInsert(String accName,String ph) {
soapSforceComSchemasClassAccountser.AccountInsert_element request_x = new soapSforceComSchemasClassAccountser.AccountInsert_element();
request_x.accName = accName;
request_x.ph = ph;
soapSforceComSchemasClassAccountser.AccountInsertResponse_element response_x;
Map<String, soapSforceComSchemasClassAccountser.AccountInsertResponse_element> response_map_x = new Map<String, soapSforceComSchemasClassAccountser.AccountInsertResponse_element>();
response_map_x.put('response_x', response_x);
WebServiceCallout.invoke(
this,
request_x,
response_map_x,
new String[]{endpoint_x,
'',
'http://soap.sforce.com/schemas/class/AccountService',
'AccountInsert',
'http://soap.sforce.com/schemas/class/AccountService',
'AccountInsertResponse',
'soapSforceComSchemasClassAccountser.AccountInsertResponse_element'}
);
response_x = response_map_x.get('response_x');
}
}
}
Write a WebServiceMock Class
global with sharing class MockClass implements WebServiceMock {
global void doInvoke(
Object stub,
Object request,
Map<String, Object> response,
String endpoint,
String soapAction,
String requestName,
String responseNS,
String responseName,
String responseType) {
soapSforceComSchemasClassAccountser.AccountInsertResponse_element objAC = new soapSforceComSchemasClassAccountser.AccountInsertResponse_element();
response.put('response_x',objAC);
}
}
Test Class:
@isTest
private class soapSforceComSchemasClassAccountserTest {
static testMethod void myUnitTest() {
test.startTest();
soapSforceComSchemasClassAccountser.LogInfo objS1 = new soapSforceComSchemasClassAccountser.LogInfo();
soapSforceComSchemasClassAccountser.AllowFieldTruncationHeader_element objS2 = new soapSforceComSchemasClassAccountser.AllowFieldTruncationHeader_element();
soapSforceComSchemasClassAccountser.DebuggingHeader_element objS3 = new soapSforceComSchemasClassAccountser.DebuggingHeader_element();
soapSforceComSchemasClassAccountser.CallOptions_element objS4 = new soapSforceComSchemasClassAccountser.CallOptions_element();
soapSforceComSchemasClassAccountser.AccountInsert_element objS5 = new soapSforceComSchemasClassAccountser.AccountInsert_element();
soapSforceComSchemasClassAccountser.location objS6 = new soapSforceComSchemasClassAccountser.location();
soapSforceComSchemasClassAccountser.address objS7 = new soapSforceComSchemasClassAccountser.address();
soapSforceComSchemasClassAccountser.SessionHeader_element objS8 = new soapSforceComSchemasClassAccountser.SessionHeader_element();
soapSforceComSchemasClassAccountser.AccountInsertResponse_element objS9 = new soapSforceComSchemasClassAccountser.AccountInsertResponse_element();
soapSforceComSchemasClassAccountser.DebuggingInfo_element objS10 = new soapSforceComSchemasClassAccountser.DebuggingInfo_element();
Test.setMock(WebServiceMock.class, new MockClass());
soapSforceComSchemasClassAccountser.AccountService objS11 = new soapSforceComSchemasClassAccountser.AccountService ();
objS11.AccountInsert('test', '1234567890');
test.stopTest();
}
}
click on "Run Test" and check the code coverage of "soapSforceComSchemasClassAccountser".



No comments:
Post a Comment