Ich habe das folgende Problem. Hier ist mein Ziel Apex-Klasse, die Ineed zu testen:Testmethoden spotten 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
}
}
Und hier ist meine Testklasse
@isTest
public TargetClassTest() {
static testmethod void test() {
test.startTest();
TargetClass tgtClass = new TargetClass();
tgtClass.methodOne();
TargetClass.methodTwo(TargetClass.BatchId);
}
}
Wenn Methodon getan wird und methdTwo genannt wird, haben wir die BatchID Eigenschaft zugewiesen, aber die AsynApexJob ist noch nicht in der Datenbank, so wirft methodzwei eine Ausnahme auf. Wie kann ich es lösen und meine Tests beenden? Ich habe die folgenden Ideen 1. run methodTwo immer wenn der AsynApexJob in der Datenbank ist. Wie kann ich das machen? Eine Endlosschleife, die die Datenbank überprüft, funktioniert nicht, da wir die Grenze der Abfragen erreicht haben. 2. Mocking ein AsyncApexJob. Ich brauche nicht notwendigerweise den AsynApexJob in methodOne eingefügt. Jeder würde funktionieren. Ich weiß nicht, wie ich es machen soll. Als ich versuchte, einen in die Datenbank einzufügen, bekam ich die Fehlermeldung, dass INSERT in AsynApexJob nicht verfügbar ist. Es wäre in Ordnung, wenn mir jemand helfen könnte. Danke!