Thursday, 12 December 2013

Mixed DML Operations in Test Methods

Most of us received such error "MIXED DML OPERATION" while running test classes.

What is Mixed DML Error?

DML operations on certain sObjects can’t be mixed with other sObjects in the same transaction. This is because some sObjects affect the user’s access to records in the organization. These types of sObjects must be inserted or updated in a different transaction to prevent operations from happening with incorrect access level permissions. For example, you can’t update an account and a user role in a single transaction. However, there are no restrictions on delete DML operations.

Source: Mixed DML

How to avoid in your Test class?

Here is the syntax to avoid test class errors in Mixed DML Operation salesforce. If you are inserting Setup and Non-Setup object means use System.runAs() and pass the current user information, you will get rid of from the Mixed DML errors.

  1. @isTest
  2. public class ShowEmailUtilsTest
  3. {
  4.   Public static testmethod void Test_ShowEmailUtils()
  5.    {
  6.       User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
  7.       System.runAs (thisUser)
  8.       {
  9.         // Add your test class content here
  10.       }
  11.    }
  12. }

No comments:

Post a Comment

Activities: Assign Tasks to a Queue Salesforce Lightning

Salesforce announced to assign Tasks to a Queue beginning from Spring'20 release. How does it work? In Setup, enter Queues in th...