Di solito, quando viene eseguito un trigger, controlliamo quale tipo di profilo ha l'utente, e se è il tipo in cui non vogliamo che i trigger siano in esecuzione, allora usciamo dal trigger prima di eseguire qualsiasi altro codice.Come è possibile interrompere un trigger gestito dall'esecuzione durante l'esecuzione di una classe di test?
Problema: abbiamo installato un pacchetto SF acquistato da un'altra azienda e tutto il suo codice è invisibile e non è modificabile. Come possiamo interrompere alcuni di questi trigger dall'esecuzione oltre che disabilitarli manualmente tramite l'interfaccia utente? Voglio disabilitarli temporaneamente durante l'esecuzione di una classe di test.
Stavo pensando di fare qualcosa del genere, ma ho ricevuto un errore che diceva "DML non consentito su ApexTrigger".
ApexTrigger at = [select id from ApexTrigger where name='SomeTriggerName'];
at.status = 'Inactive';
update at;
Hai una buona ragione per voler disattivarlo? So che la copertura dei test è un problema, ma dovrebbe provare uno scenario reale: se il trigger verrà eseguito nel mondo reale, assicurati che il tuo codice funzioni con esso! –
Il motivo per cui ho bisogno di disabilitarlo è perché la classe di test controlla molti scenari e i trigger pacchettizzati eseguono più istruzioni SOQL, l'esecuzione delle quali non posso controllare. Prima che possa raggiungere la copertura del test fino al 100%, il conteggio delle query SOQL raggiunge il limite del governatore di 100 nello spazio dei nomi pacchettizzato. –