Note: This release is in preview. Features described here don’t become generally available until the latest general availability date that Salesforce announces for this release. Before then, and where features are noted as beta, pilot, or developer preview, we can’t guarantee general availability within any particular time frame or at all. Make your purchase decisions only on the basis of generally available products and features.
SoqlStubProvider Class
Namespace
Usage
To create mock test classes, extend the SoqlStubProvider class and override the handleSoqlQuery() class method.
See Mock SOQL Tests for Data 360 Data Model Objects in the Apex Developer Guide.
Example
This example shows a mock test class for the SkyMilesForBusinessOptInController class.
1@IsTest
2public class SkyMilesForBusinessOptInController_Test {
3
4 @IsTest
5 public static void mockSoql() {
6
7 SoqlStubProvider stub = new UnifiedIndividualSoqlStub();
8 Test.createSoqlStub(UnifiedIndividual__dlm.sObjectType, stub);
9
10 Assert.isTrue(Test.isSoqlStubDefined(UnifiedIndividual__dlm.sObjectType));
11
12 Test.startTest();
13 string companyId = 'SampleCompanyId';
14 // Performs SOQL query against Data Model Object
15 List<SkyMilesMember> members = SkyMilesForBusinessOptInController.getSkyMilesProfilesFromDataCloud(companyId);
16
17 Test.stopTest();
18
19 Assert.areEqual(1, members.size());
20
21 SkyMilesMember member = members[0];
22
23 Assert.areEqual(companyId, member.CompanyId);
24 Assert.areEqual(5000, member.SkyMilesBalance);
25 }
26
27 class UnifiedIndividualSoqlStub extends SoqlStubProvider {
28 public override List<sObject> handleSoqlQuery(sObjectType sot, string stubbedQuery, Map<string, object> bindVars) {
29
30 Assert.areEqual(UnifiedIndividual__dlm.sObjectType, sot);
31
32 // Stub assumes that the SOQL query is searching for a single record by company id
33
34 string companyId = 'Default';
35 if(bindVars.containsKey('tmpVar1')) {
36 companyId = (string)bindVars.get('tmpVar1');
37 }
38
39 UnifiedIndividual__dlm dmo = (UnifiedIndividual__dlm)Test.createStubQueryRow(
40 sot,
41 new Map<string, object> {
42 'ssot__FirstName__c' => 'Codey',
43 'ssot__LastName__c' => 'Bear',
44 'ssot__Email__c' => 'developer@salesforce.com',
45 'ssot__SkyMilesBalance__c' => 5000,
46 'ssot__MedallionStatus__c' => 'Gold',
47 'ssot__CompanyId__c' => companyId
48 }
49 );
50 return new List<sObject> { dmo };
51
52 }
53 }
54}1public with sharing class SkyMilesForBusinessOptInController {
2 public static List<SkyMilesMember> getSkyMilesProfilesFromDataCloud(String companyId) {
3 List<UnifiedIndividual__dlm> unifiedIndividuals = [
4 SELECT
5 Id,
6 ssot__FirstName__c,
7 ssot__LastName__c,
8 ssot__Email__c,
9 ssot__SkyMilesBalance__c,
10 ssot__MedallionStatus__c,
11 ssot__CompanyId__c
12 FROM UnifiedIndividual__dlm
13 WHERE ssot__CompanyId__c = :companyId
14 ];
15 List<SkyMilesMember> skyMilesMembers = new List<SkyMilesMember>();
16 for (UnifiedIndividual__dlm individual : unifiedIndividuals) {
17 skyMilesMembers.add(
18 new SkyMilesMember(
19 individual.Id,
20 individual.ssot__FirstName__c,
21 individual.ssot__LastName__c,
22 individual.ssot__Email__c,
23 individual.ssot__SkyMilesBalance__c,
24 individual.ssot__MedallionStatus__c,
25 individual.ssot__CompanyId__c
26 )
27 );
28 }
29 return skyMilesMembers;
30 }
31}
32
33
34
35SoqlStubProvider Methods
The following are methods for SoqlStubProvider.
handleSoqlQuery(targetType, stubbedQuery, bindMap)
Signature
public List<SObject> handleSoqlQuery(Schema.SObjectType targetType, String stubbedQuery, Map<String,Object> bindMap)
Parameters
- targetType: Type: Schema.SObjectType The SObject type to be stubbed. This parameter can’t be null.
- stubbedQuery: Type: String The SOQL query whose response is to be stubbed. Bind variables are replaced with placeholders.
- bindMap: Type: Map<String,Object> A map that contains placeholder keys for each bind variable specified in the SOQL query string and its value.