Я бы предположил, что лучшим подходом было бы убедиться, что триггер не выполняет пакет, если Test.IsRunningTest()
равно true
, а затем протестировать класс пакета с помощью собственного метода тестирования. Я подозреваю, что ваш триггер сработал дважды, поэтому пакетные экземпляры создаются и запускаются более одного.
Используя специальный метод тестирования, вы можете выполнить пакет, указав ограничение для запроса, и вы должны использовать необязательный параметр размера пакета, чтобы контролировать количество вызовов, которые нужно выполнить, т.е. если ваш лимит равен 50, но вы делаете это:
Database.executeBatch(myBatchInstance, 25);
Все равно нужно будет дважды вызвать метод execute()
, чтобы охватить все записи, и именно здесь вы столкнетесь с проблемами, подобными той, которую вы упомянули.