You need to sign in to do that
Don't have an account?
lavanya gottumukkala
How to cover webservice.invoke method(managed) in test classes
Hi All,
I have below wsdl2 generated code.
public S3.Status DeleteObject(String Bucket,String Key,String AWSAccessKeyId,DateTime Timestamp,String Signature,String Credential)
{
S3.DeleteObject_element request_x = new S3.DeleteObject_element();
S3.DeleteObjectResponse_element response_x;
request_x.Bucket = Bucket;
request_x.Key = Key;
request_x.AWSAccessKeyId = AWSAccessKeyId;
request_x.Timestamp = Timestamp;
request_x.Signature = Signature;
request_x.Credential = Credential;
Map<String, S3.DeleteObjectResponse_element> response_map_x = new Map<String, S3.DeleteObjectResponse_element>(); response_map_x.put('response_x', response_x);
WebServiceCallout.invoke( this, request_x, response_map_x, new String[]{endpoint_x, '', 'http://s3.amazonaws.com/doc/2006-03-01/', 'DeleteObject', 'http://s3.amazonaws.com/doc/2006-03-01/', 'DeleteObjectResponse', 'S3.DeleteObjectResponse_element'} );
response_x = response_map_x.get('response_x');
return response_x.DeleteObjectResponse;
}
The Webservice.invoke method covered in test class in developer org,but not covered in packaging orgs.
How can I cover that method in packaging org also?
I have below wsdl2 generated code.
public S3.Status DeleteObject(String Bucket,String Key,String AWSAccessKeyId,DateTime Timestamp,String Signature,String Credential)
{
S3.DeleteObject_element request_x = new S3.DeleteObject_element();
S3.DeleteObjectResponse_element response_x;
request_x.Bucket = Bucket;
request_x.Key = Key;
request_x.AWSAccessKeyId = AWSAccessKeyId;
request_x.Timestamp = Timestamp;
request_x.Signature = Signature;
request_x.Credential = Credential;
Map<String, S3.DeleteObjectResponse_element> response_map_x = new Map<String, S3.DeleteObjectResponse_element>(); response_map_x.put('response_x', response_x);
WebServiceCallout.invoke( this, request_x, response_map_x, new String[]{endpoint_x, '', 'http://s3.amazonaws.com/doc/2006-03-01/', 'DeleteObject', 'http://s3.amazonaws.com/doc/2006-03-01/', 'DeleteObjectResponse', 'S3.DeleteObjectResponse_element'} );
response_x = response_map_x.get('response_x');
return response_x.DeleteObjectResponse;
}
The Webservice.invoke method covered in test class in developer org,but not covered in packaging orgs.
How can I cover that method in packaging org also?
refer to this document to test custom webservice callouts
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_callouts_wsdl2apex_testing.htm
You have to implement a Mock test class that simulates the remote webserver in the test class.
Hope this helps
May the Force.com be with you!
It's urgent.Thanks in advance.
public dto16ApiEchosign.EmbeddedWidgetCreationResult createEmbeddedWidget(String apiKey,dtoApiEchosign.SenderInfo senderInfo,dto8ApiEchosign.WidgetCreationInfo widgetInfo) { apiEchosign.createEmbeddedWidget_element request_x = new apiEchosign.createEmbeddedWidget_element(); request_x.apiKey = apiKey;
request_x.senderInfo = senderInfo;
request_x.widgetInfo = widgetInfo;
apiEchosign.createEmbeddedWidgetResponse_element response_x; Map<String, apiEchosign.createEmbeddedWidgetResponse_element> response_map_x = new Map<String, apiEchosign.createEmbeddedWidgetResponse_element>();
response_map_x.put('response_x', response_x);
If(!Test.isRunningTest())
{
WebServiceCallout.invoke(
this,
request_x,
response_map_x,
new String[]{endpoint_x, '', 'http://api.echosign', 'createEmbeddedWidget', 'http://api.echosign', 'createEmbeddedWidgetResponse', 'apiEchosign.createEmbeddedWidgetResponse_element'} );
}
response_x = response_map_x.get('response_x');
if(response_x!=null)
return response_x.embeddedWidgetCreationResult;
else return null;
}
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_callouts_wsdl2apex_testing.htm
I'll try to setup the test code as your needs.
This is an example of the Mock class:
And this is how it have to be called from withing test class: