-
Notifications
You must be signed in to change notification settings - Fork 0
The MockSoql.Simulator Interface
Jason Siders edited this page Jul 4, 2025
·
3 revisions
The MockSoql.Simulator interface defines custom logic for returning query results. Use this interface when you need more complex logic than what MockSoql.StaticResults can provide.
Example: This query returns a List<Task>, as long as the query is FROM Task:
private class CustomQueryLogic implements MockSoql.Simulator {
public List<Object> simulateQuery(Soql queryToMock) {
String fromSObjectName = queryToMock?.entity;
if (fromSObjectName == Task.SObjectType.toString()) {
return this.simulateTaskQuery();
} else if (fromSObjectName == Account.SObjectType.toString()) {
// You could imagine methods to simulate account queries here:
} else {
return new List<Object>();
}
}
private List<Task> simulateTaskQuery() {
// For each inserted contact, return a Task
List<Task> results = new List<Task>();
List<Contact> contacts = (List<Contact>) MockDml.INSERTED.getRecords(
Contact.SObjectType
);
for (Contact contact : contacts) {
Task task = (Task) new MockRecord(Task.SObjectType)
?.setField(Task.Subject, 'Introductory Call')
?.setField(Task.WhatId, contact?.AccountId)
?.setField(Task.WhoId, contact?.Id)
?.withId()
?.toSObject();
results?.add(task);
}
return results;
}
}List<Object> simulateQuery(Soql queryToMock)
Conditionally return results based on the details of the provided Soql argument.
- Generating Test Records
- Dml
- Soql
- Cmdt
- Plugins
- DatabaseLayer
- Dml
- MockDml
- MockRecord
- Cmdt
- MockCmdt
- MockSoql
-
Soql
- Soql.AggregateResult
- Soql.Aggregation
- Soql.Binder
- Soql.Builder
- Soql.Condition
- Soql.ConditionalLogic
- Soql.Criteria
- Soql.Cursor
- Soql.Function
- Soql.InnerQuery
- Soql.InvalidParameterValueException
- Soql.LogicType
- Soql.NullOrder
- Soql.Operation
- Soql.Operator
- Soql.ParentField
- Soql.PreAndPostProcessor
- Soql.QueryLocator
- Soql.Request
- Soql.Scope
- Soql.Selectable
- Soql.SortDirection
- Soql.SortOrder
- Soql.Subquery
- Soql.TypeOf
- Soql.Usage
- Soql.WhenClause