IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Salesforce.com Discussion :

[APEX] Test Method


Sujet :

Salesforce.com

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2013
    Messages : 32
    Par défaut [APEX] Test Method
    Bonjour,

    Je fais appelle encore une fois à la gentillesse des personnes de se forum pour me répondre .
    Je dois créer une test Method pour ma classe Apex me servant a enregistrer dans un objet Mail__c les mails arrivant dans mon service de messagerie électronique.
    Mon problème est que les Test Method je n'y comprend rien...
    J'ai essayé avec les docs... rien à faire je ne vois pas ou est le problème de ma test method.
    Quelqu'un pourrait-il m'éclairer au sujet des tests methods ou m'aider à corriger ma test method ?
    Voici mon code pour mon service de messagerie :
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    global class CreateMail implements Messaging.InboundEmailHandler {
     
        global Messaging.InboundEmailResult handleInboundEmail(Messaging.inboundEmail email, 
                                                           Messaging.InboundEnvelope env){
     
            Messaging.InboundEmailResult result = new Messaging.InboundEmailResult();
            String myPlainText= '';
            // Add the email plain text into the local variable
            myPlainText = email.plainTextBody;
            // New Mail object to be created
            Mail__c[] newMail = new Mail__c[0];
     
     
            // Add a new Mail 
            newMail.add(new Mail__c(Description__c = myPlainText,
            Objet__c=email.subject,
            Adresse_Email__c = email.fromAddress));
            // Insert the new Mail Object
            insert newMail;
            result.success = true;                                                           
            // Return the result for the Apex Email Service
            return result;
      }
    }
    et celui de ma test method :
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    @isTest
     
    public class testMail {
     
        @isTest static void TestEmailCreate(){
    // Create a new email and envelope object
       Messaging.InboundEmail email = new Messaging.InboundEmail() ;
       Messaging.InboundEnvelope env    = new Messaging.InboundEnvelope();
     
       email.plainTextBody='Test';
       email.subject = 'TestMethod fait par Kevin ';
       email.fromAddress = 'rmencke@salesforce.com';
       String myPlainText = email.plainTextBody;
       Mail__c[] MailTesting= new Mail__c[0];
       MailTesting.add(new Mail__c(Description__c = myPlainText,
       Objet__c = email.subject,
       Adresse_Email__c = email.fromAddress));
       insert MailTesting;
     
       CreateMail newMailtest= new CreateMail();
       newMailtest.handleInboundEmail(email, env );
       }
       }
    Je précise que derrière la réception et le stockage dans un objet de mon Mail, je déclenche un trigger pour faire une requête HTTP. Le trigger doit-il être intégré à la Test Method aussi ? Si il le faut je publierai mon code de Trigger.

    Merci d'avance pour vos réponses,

    Cordialement,

    Kevin

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 239
    Par défaut
    Bonjour,

    Déjà, le fondamental: une TestMethod, ça sert à TESTER les methodes de ta class

    dans ton cas, tu veux donc tester si la method handleInboundEmail fait bien ce qu'elle a à faire cad insert l'enregistrement dans l'objet Mail__c
    donc si tu insert à la main dans la method de test, c'est effectivement pas tres logique

    la testmethod devrait ressembler à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    @isTest
     
    public class testMail {
     
        @isTest static void TestEmailCreate(){
    
    // Create a new email and envelope object
       Messaging.InboundEmail email = new Messaging.InboundEmail() ;
       Messaging.InboundEnvelope env    = new Messaging.InboundEnvelope();
     
       email.plainTextBody='Test';
       email.subject = 'TestMethod fait par Kevin ';
       email.fromAddress = 'rmencke@salesforce.com';
       String myPlainText = email.plainTextBody;
    
       CreateMail newMailtest= new CreateMail();
       Messaging.InboundEmailResult result = newMailtest.handleInboundEmail(email, env );
       
    //Tester la valeur result.success
    System.assertEquals(true, result.success)
    
    // Tester si l'insert dans Mail__c est correct (par exemple)
    Mail__c mail = [SELECT FROM Mail__c WHERE Adresse_Email__c = 'rmencke@salesforce.com'];
    System.assertEquals('rmencke@salesforce.com', mail[0].Adresse_Email__c)
    
    
       }
       }

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2013
    Messages : 32
    Par défaut
    Bonjour Vincent,

    J'ai bien modifier le code pour ma Test Method. Merci pour ta réponse je commence à mieux comprendre les Test Method grâce à toi
    Le seul problème que je rencontre maintenant c'est un message d'erreur lors du test :
    Les méthodes définies comme méthodes de test ne prennent pas en charge les appels du service Web.
    Sais tu as quoi cela peut être du ?

  4. #4
    Membre averti
    Homme Profil pro
    chef de test
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chef de test

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut
    Malheureusement c'est un peu plus compliqé pour les web service. il faut simuler l'appel et la réponse du web service.
    Un peu de lecture : Testing Web Service Callouts

    Bonne chance

  5. #5
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Par défaut
    Citation Envoyé par v.charlet Voir le message
    Bonjour,

    Déjà, le fondamental: une TestMethod, ça sert à TESTER les methodes de ta class

    dans ton cas, tu veux donc tester si la method handleInboundEmail fait bien ce qu'elle a à faire cad insert l'enregistrement dans l'objet Mail__c
    donc si tu insert à la main dans la method de test, c'est effectivement pas tres logique

    la testmethod devrait ressembler à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    @isTest
     
    public class testMail {
     
        @isTest static void TestEmailCreate(){
    
    // Create a new email and envelope object
       Messaging.InboundEmail email = new Messaging.InboundEmail() ;
       Messaging.InboundEnvelope env    = new Messaging.InboundEnvelope();
     
       email.plainTextBody='Test';
       email.subject = 'TestMethod fait par Kevin ';
       email.fromAddress = 'rmencke@salesforce.com';
       String myPlainText = email.plainTextBody;
    
       CreateMail newMailtest= new CreateMail();
       Messaging.InboundEmailResult result = newMailtest.handleInboundEmail(email, env );
       
    //Tester la valeur result.success
    System.assertEquals(true, result.success)
    
    // Tester si l'insert dans Mail__c est correct (par exemple)
    Mail__c mail = [SELECT FROM Mail__c WHERE Adresse_Email__c = 'rmencke@salesforce.com'];
    System.assertEquals('rmencke@salesforce.com', mail[0].Adresse_Email__c)
    
    
       }
       }
    Sauf que les testmethod sur Salesforce font aussi coverage.
    Donc je dirais cela sert à tester et faire le coverage
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/08/2008, 19h22
  2. Methode test d'expression reguliere
    Par nox75 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/07/2008, 17h02
  3. [unit test] methode protected / private
    Par ZaaN dans le forum C#
    Réponses: 2
    Dernier message: 10/03/2008, 16h10
  4. [Cppunit] test de methodes privees
    Par Patriarch24 dans le forum Bibliothèques
    Réponses: 7
    Dernier message: 06/03/2006, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo