У меня есть следующая проблема. Вот моя цель апекс класс Ineed испытанию:Методы тестирования mocking ApexAsynJob
class TargetClass {
public static Id BatchId {get; set;}
public void methodOne() {
//adding an ApexAsyncJob in database and assign its ID ot BatchId
}
@Remote
public static String methodTwo(string batchId) {
//gets the ApexAsynJob inserted in previous method from database and //do some operations with it
}
}
А вот мой класс тестирование
@isTest
public TargetClassTest() {
static testmethod void test() {
test.startTest();
TargetClass tgtClass = new TargetClass();
tgtClass.methodOne();
TargetClass.methodTwo(TargetClass.BatchId);
}
}
Когда метадона сделано и methdTwo называется, мы имеем свойство BatchId назначен, но AsynApexJob является а не в базе данных, поэтому methodtwo выбрасывает исключение. Как я могу это решить и закончить тесты. У меня есть следующие идеи: 1. Запустите метод дважды, когда AsynApexJob находится в базе данных. Как я могу это сделать? Бесконечный цикл проверки базы данных не работает, поскольку мы попадаем в предел запросов. 2. Издевается над AsyncApexJob. Мне не обязательно нужен AsynApexJob, вставленный в методOne. Любой будет работать. Я не знаю, как это сделать. Когда я попытался вставить его в базу данных, у меня появилось сообщение об ошибке, которое INSERT не доступно в AsynApexJob. Было бы хорошо, если кто-то может мне помочь. Спасибо!