-
Notifications
You must be signed in to change notification settings - Fork 519
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 methodsList<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 objectTypeType
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 nameString
private returnValueObject
public hasBeenCalledXTimesInteger
private throwsExceptionBoolean
private exceptionMessageString
private listOfParamTypesList<Type>
private listOfParamNamesList<String>
private listOfArgsList<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