Genellikle, bir tetikleyici çalıştığında, kullanıcının ne tür bir profili olduğunu kontrol ederiz ve tetikleyicilerin çalışmasını istemediğimiz bir türse, başka bir kodu çalıştırmadan önce tetikleyiciden çıkarız.Bir test sınıfı çalıştırırken yönetilen bir tetikleyicinin yürütülmesini nasıl durdurabilirim?
Sorun: Başka bir şirketten satın aldığımız bir SF paketimiz var ve bu kodun tamamı bizim için görünmez ve düzenlenebilir değil. Bu tetikleyicilerin bazılarının, kullanıcı arayüzü aracılığıyla manuel olarak devre dışı bırakılmasının dışında çalışmasını nasıl durdurabiliriz? Bir test dersi çalıştırırken bunları geçici olarak devre dışı bırakmak istiyorum.
Böyle bir şey yapmayı düşünüyordum, ancak "ApexTrigger'da DML'ye izin verilmiyor" şeklinde bir hata oluştu.
ApexTrigger at = [select id from ApexTrigger where name='SomeTriggerName'];
at.status = 'Inactive';
update at;
Devre dışı bırakmak istediğiniz için iyi bir nedeniniz var mı? Test kapsamının bir acı olduğunu biliyorum, ama gerçek bir dünya senaryosunu test etmeliyiz - eğer tetikleyici gerçek dünyada koşacaksa, kodunuzun onunla çalıştığından emin olmak istersiniz! –
Bunu devre dışı bırakmam gerekmesinin nedeni, test sınıfının birçok senaryoyu denetlemesi ve paketlenmiş tetikleyicilerin, denetleyemediğim çoklu SOQL deyimlerini çalıştırmasıdır. Test kapsamını% 100'e kadar elde edebilmem için, SOQL sorgu sayısı paketlenmiş ad alanında 100 vali limitine ulaşır. –