Direkt zum Hauptbereich

Posts

Es werden Posts vom Mai, 2013 angezeigt.

Testklasse schlägt fehl trotz erfolgreicher Frontend-Test

Kurze Beschreibung:  wir haben 3 Objekte, die in Master-Detail Beziehung miteinander stehen (s. Abbildung). Auf der untersten Ebene - Bestellposition - führt ein Trigger diverse Berechnungen durch. Dabei wird unter anderem die ID des relevanten Kunden über die Relation zur Bestellung berechnet, ungefähr so:     ID idKunde = Bestellung__r.Kunde__c; Funktioniert einwandfrei im Frontend! Jetzt die entsprechende Testklasse schreiben. Alle Testobjekte sind da und miteinander verknüpft. Trotzdem meldet sich der Trigger beim Ausführen mit der folgenden Fehlermeldung:         System.DmlException: Insert failed. First exception on row 0; first error: REQUIRED_FIELD_MISSING, Required fields are missing: [Kunde__c] Problemlösung: in der Testklasse muss auch der entsprechende Bezug zwischen Bestellposition und Bestellung hergestellt werden. Die letzte Zeile zeigt wie. Bestellung b = New Bestellung (); ... BestellPosition p = New BestellPosition

Batch Verarbeitung

Gewöhnlicherweise besteht jeder Batch aus 4 Bestandteilen: - Konstruktor - Methode "start()" - Methode "execute()" - Methode "finish()" Execute führt diverse Berechnungen durch und erstellt neue Datensätze. Finish versendet anschließend eine Email. Diese Email enthält unter anderem die Anzahl der erstellten Datensätze. Problem: die in execute() mit neuen Datensätzen gefüllte Liste war in finish() leer. Lösung:  Database.Stateful  in der Klassendefinition, z.B. global class  meinBatch implements Database.Stateful, Database.Batchable<SObject>{