-
Notifications
You must be signed in to change notification settings - Fork 464
TestDouble
ISTEST
Implements an easy and re-usable StubProvider Utilizes a fluent interface for ease of use. This is merely an example of how you could build a reusable stub provider class. There are definitely edge cases or features not handled by this class.
The general mechanism for use looks like this:
TestDouble stub = new TestDouble(SomeClass.class);
TestDouble.Method methodToTrack = new TestDouble.Method('methodName')
.returning(someObject);
stub.track(methodToTrack);
ConsumingClass consumer = new ConsumingClass(
(someClass) stub.generate()
);
Implements
System.StubProvider
Property holds a list of objects specifying method calls that the developer has actively specified a TestDouble or stub for.
private methods
List<Method>
This is a required property! it specifies the Apex Type that is being actively stubbed. Note, you cannot stub system provided classes, sObjects and static methods. see: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_testing_stub_api.htm for details on the limitations of the StubProvider interface
private objectType
Type
Constructor requiring the Type parameter to ensure we always set the Type property.
public TestDouble(Type objectType)
Name | Type | Description |
---|---|---|
objectType | Type | Type name. ie: TestDouble.class |
This adds a given method object to the list of Methods
that are actively overridden and stubbed by this TestDouble
instance.
public TestDouble track(Method toTrack)
Name | Type | Description |
---|---|---|
toTrack | Method | A TestDouble.Method object |
Generates the actual stub object for use in tests.
public Object generate()
Object
This object has to be casted back to the,[object Object],class being stubbed at the point of calling. See ,[object Object],[object Object],for an example of when, and how to cast this.
handleMethodCall(stubbedObject, stubbedMethodName, returnType, listOfParamTypes, listOfParamNames, listOfArgs)
SUPPRESSWARNINGS
Required method for the StubProvider interface This extensive parameter list is used to help disambiguate overloaded method names where needed. This method is used to delegate response to appropriate Method object - matched by name and params.
public Object handleMethodCall(Object stubbedObject, String stubbedMethodName, Type returnType, List<System.Type> listOfParamTypes, List<String> listOfParamNames, List<Object> listOfArgs)
Name | Type | Description |
---|---|---|
stubbedObject | Object | - This is the object being stubbed |
stubbedMethodName | String | - This is the name of the Method being stubbed |
returnType | Type | - Return type |
listOfParamTypes | List<System.Type> | - List of parameter types |
listOfParamNames | List<String> | - List of parameter names |
listOfArgs | List<Object> | - List of parameter values |
Object
Object to be returned by the Method object this method delegates to.
Internal exception class.
This inner class describes a Method that is to be stubbed.
Multiple Method objects will likely be created in the course of your unit
tests, and these Method objects are added to the methods
property of
your TestDouble instance.
private name
String
private returnValue
Object
public hasBeenCalledXTimes
Integer
private throwsException
Boolean
private exceptionMessage
String
private listOfParamTypes
List<Type>
private listOfParamNames
List<String>
private listOfArgs
List<Object>
Minimalist constructor for this class.
public Method(String methodName)
Name | Type | Description |
---|---|---|
methodName | String | the name of the method to be stubbed. |
Adds a matching ParamTypes list to this method definition. If added,
public Method withParamTypes(List<Type> paramTypes)
Name | Type | Description |
---|---|---|
paramTypes | List<Type> |
Method
public Method withParamNames(List<String> paramNames)
Name | Type | Description |
---|---|---|
paramNames | List<String> |
Method
public Method withArgs(List<Object> args)
Name | Type | Description |
---|---|---|
args | List<Object> |
Method
public Method returning(Object returnValue)
Name | Type | Description |
---|---|---|
returnValue | Object |
Method
public Method throwing(String exceptionMessage)
Name | Type | Description |
---|---|---|
exceptionMessage | String |
Method
public Object handleCall()
Object