Bazen Salesforce testlerinde, belirli bir kullanıcı türü olarak sınamanın bir bölümünü çalıştırmak için Kullanıcı nesneleri oluşturmanız gerekir.Kullanıcıları oluşturan Salesforce testlerinde MIXED_DML_OPERATION hatası nasıl engellenir?
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
Not hata değildir yaptığı:
Ancak Salesforce Yaz 08 güncellemeden bu yana, aşağıdaki hata aynı test kurşun hem Kullanıcı nesneleri ve (örneğin Hesaplar gibi), normal nesneler yaratmak için çalışır Testleri Eclipse/Force.com IDE'den çalıştırdığınızda gerçekleşir, ancak Salesforce'a dağıttığınızda ve ardından testleri Salesforce'un içinden çalıştırdığınızda gerçekleşir.
Nasıl bu hatayı önlemek için benim testleri-yazma yeniden do? Sanırım, burada henüz üzerinde
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 = 'tes[email protected]';
update a;
}
}
Bekle olur? Ben sadece yeni Kullanıcı örneğini başlatabilir ve doğrudan system.runAs() –
'da kullanabilirsiniz. Fakat birden fazla/yeni kullanıcıya ihtiyacım varsa ne yapmalıyım? Yeni kullanıcılar için kullanıcı kimliklerini incelemek isteyip istemediğimi görmek için birden çok system.runAs() ile oynayacağım. – tggagne
Hala işe yarayacak - kullanıcı eklemeniz gerekmez. Ayrıca, geçerli kullanıcı seçecekseniz system.runAs() kullanımı nedir? –