Zwykle po uruchomieniu wyzwalacza sprawdzamy, jaki profil ma użytkownik, a jeśli jest to typ, w którym nie chcemy uruchamiać wyzwalaczy, zamykamy wyzwalacz przed uruchomieniem dowolnego innego kodu.Jak zatrzymać uruchamianie zarządzanego wyzwalacza podczas uruchamiania klasy testowej?
Problem: mamy zainstalowany pakiet SF zakupiony od innej firmy, a cały jego kod jest dla nas niewidoczny i nie można go edytować. Jak możemy powstrzymać niektóre z tych wyzwalaczy przed uruchomieniem innym niż ręczne wyłączenie ich za pomocą interfejsu użytkownika? Chcę tymczasowo wyłączyć je podczas uruchamiania klasy testowej.
Myślałem o zrobieniu czegoś takiego, ale otrzymałem komunikat o błędzie "DML nie jest dozwolony w ApexTrigger."
ApexTrigger at = [select id from ApexTrigger where name='SomeTriggerName'];
at.status = 'Inactive';
update at;
Czy masz dobry powód, aby chcieć go wyłączyć? Wiem, że zasięg testów to ból, ale powinien testować scenariusz w prawdziwym świecie - jeśli wyzwalacz będzie działał w świecie rzeczywistym, chcesz się upewnić, że twój kod działa z nim! –
Powodem, dla którego muszę go wyłączyć, jest to, że klasa testowa sprawdza wiele scenariuszy, a pakowane wyzwalacze uruchamiają wiele instrukcji SOQL, których wykonanie nie mogę kontrolować. Zanim uzyskam test zasięgu do 100%, liczba zapytań SOQL osiągnie limit administratora wynoszący 100 w pakowanej przestrzeni nazw. –