有時在Salesforce測試中,您需要創建用戶對象以將特定類型的用戶作爲測試的一部分運行。如何避免Salesforce測試中創建用戶的MIXED_DML_OPERATION錯誤
然而,由於Salesforce的夏季08更新,嘗試創建在同一個測試引線的兩個用戶對象和正常對象(如會計)以下錯誤:該錯誤不
MIXED_DML_OPERATION, DML operation on setup object is not permitted after you have updated a non-setup object (or vice versa): User, original object: Account
注當您從Eclipse/Force.com IDE運行測試時發生,但是當您部署到Salesforce並在Salesforce內運行測試時會發生。
如何重寫我的測試以避免此錯誤?
下面是導致錯誤的測試的一個簡單的例子:
static testMethod void test_mixed_dmlbug() {
Profile p = [select id from profile where name='(some profile)'];
UserRole r = [Select id from userrole where name='(some role)'];
User u = new User(alias = 'standt', email='[email protected]',
emailencodingkey='UTF-8', lastname='Testing',
languagelocalekey='en_US',
localesidkey='en_US', profileid = p.Id, userroleid = r.Id,
timezonesidkey='America/Los_Angeles',
username='[email protected]');
Account a = new Account(Firstname='Terry', Lastname='Testperson');
insert a;
System.runAs(u) {
a.PersonEmail = '[email protected]';
update a;
}
}
等待,我們需要插入一個用戶記錄呢?我認爲你可以簡單地初始化新的User實例,並直接在system.runAs()中使用 – 2011-09-05 12:42:54
但是如果我需要多個/ new/user,該怎麼辦?我打算用多個system.runAs()來查看我是否可以爲我的新用戶設置用戶標識符。 – tggagne 2012-03-20 03:08:23
它仍然有效 - 你不需要插入用戶。另外,如果您要選擇當前用戶,system.runAs()的用法是什麼? – 2012-05-04 10:36:45