No matter what to do, the case is always assigned by the assignment rule!!
You can try the scenario and code which are attached in the post.
But, I have tried to execute the code in the developer console, and it is ok.
The whole test scenario is as below:
[Case assignment rule] <== only 1 rule for testing
Criteria:
ISPICKVAL(Type, 'Other')
Assign to:
Case default queue
[Testing class]
@isTest(SeeAllData=true)
private class TestCases {
static testMethod void unitTest01() {
Case caCheck;
Case c = new Case();
c.Type = 'Other';
insert c;
caCheck = [ SELECT Id,Owner.Name FROM Case WHERE Id =: c.Id ];
System.assertEquals(caCheck.Owner.Name, Userinfo.getName()); // Owner is changed to 'Case default queue'
}
static testMethod void unitTest02() {
Case caCheck;
Case c = new Case();
c.Type = 'Other';
Database.DMLOptions dmo = new Database.DMLOptions();
dmo.assignmentRuleHeader.useDefaultRule= false;
c.setOptions(dmo);
insert c;
caCheck = [ SELECT Id,Owner.Name FROM Case WHERE Id =: c.Id ];
System.assertEquals(caCheck.Owner.Name, Userinfo.getName()); // Owner is changed to 'Case default queue'
}
}
[Testing result]
2 errors:
1.
System.AssertException: Assertion Failed: Expected: Case default queue, Actual: Cray Kao
Class.TestCases.unitTest01: line 9, column 1
2.
System.AssertException: Assertion Failed: Expected: Case default queue, Actual: Cray Kao
Class.TestCases.unitTest02: line 20, column 1