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

Symfony PHP Discussion :

validateur dans un test unitaire


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Par défaut validateur dans un test unitaire
    Rebonjour

    Je voudrais savoir, si je peux faire un test unitaire en utilisant un validateur.

    J'explique, sur une date, j'ai un validateur , je ne soumettre le formulaire que lorsque la date doit être postérieure à 6 mois .

    Mais je ne sais pas si je peux utiliser la fonction de validateur dans mon fichier modelTest.php?

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    C'est sur ton save() donc que tu veux faire un test unitaire ?

    Si non, quel est la fonction que sur laquelle tu fais ton test unitaire (avec éventuellement le code de cette fonction) ?

    Da manière générale, ton test devrait se dérouler sous cette forme :
    - tu initialises ton objet ;
    - tu lances ta méthode (peu importe si elle requiert un validateur) ;
    - tu testes si ton objet a été enregistré ou non en base.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Par défaut
    avant je faisais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $expected = '{ 	"id" : "1","label": "mon test", "value": "valuetest"}';
    $t->is($monModel->maFonction(), $expected, '**Test colonnes par défaut**');
    parceque j'avais le resultat attendu dans le $expected.

    Alors la, je ne sais pas quoi faire, je dois tester sur la validation de mon formulaire , comme tu as mentionné, probablement sur le save que je dois tester.

    Merci

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut


    Dans un formulaire, la validation n'est possible que si tous les validateurs répondent ok.

    Donc, si as un champ, ou plusieurs, il n'y a pas de particularités.

    Dans ton contrôleur (executeXxxx) tu bind les données, puis tu fait un tour par isValid(), si vrai, tu sauve, si faux, tu réaffiches.


    Qu'est-ce donc que ce fichier : modelTest.php ?

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Par défaut
    Je ne cherche pas à valider mon formulaire, si vous voulez le développement je l'ai terminé, maintenant, je suis dans la phase de tests, et donc j'ai crée un fichier "modelTest.php => corespond à mon model "
    Mais je voudrai faire un test correct, d'habitude les tests unitaires, je ne les effectue pas sur les validateurs; mais ça serait bien si je le ferai cette fois.

    et Dans mon exemple donné, le test correspond à un retour attendu => test basique.

    Je ne sais pas si c'est assez explicite

    Merci

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Il y a plusieurs choses que je ne comprends pas :
    - ce que tu veux tester (un test unitaire teste une méthode, pas un validateur -- dans ce dernier cas, il s'agit d'un test fonctionnel) ;
    - ce à quoi correspond ton string $expected.

    Du coup, pourrais-tu poster clairement le contenu de la fonction que tu tentes de tester ?

    Egalement, quels sont les cas de test ? ("je veux tester tel cas, qui implique tel résultat")

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Par défaut
    C'est vrais , je pense ne pas était clair
    Je voudrais faire un test sur la date, quelle soit moin de 6mois.
    Dans mon validateur j'ai cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $this->setValidator('date', new sfValidatorDate(
    array(
    'min'         => '6 month ago',
    'max'         => 'now')
    Donc je voudrais faire un test (Unitaire ou fonctionnel ??)

    Si je met une date antérieure à 6 mois, message d'erreur, sinon, test accepté.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Comme je te l'ai indiqué, un test unitaire est fait pour tester une méthode.

    Donc, dans ton cas, je te conseillerais :

    1. de suivre le scénario que j'ai mis plus haut, à savoir (plus en détail) :
    - tu créés un array listant les 'fieldName' => 'value' de l'objet lié à ton formulaire ;
    - tu instancies un formulaire avec cet array ;
    - tu lances un $form->save() ;

    Puis, soit :
    - tu testes si ton objet a été sauvegardé en DB ;
    soit :
    - tu testes le $form->isValid().

    Il y a peut-être une ou deux petites choses à corriger dans ce que je t'ai dis, mais normalement il devrait ressembler à ça ton test unitaire. Ce scénario suit la logique :
    - en fonction de conditions initiales (les valeurs de l'array) ;
    - la méthode que je teste (save / isValid) ;
    - remplit correctement sa fonction (sauvegarde ou non en base / retourne true ou false).

    2. Ou bien tu te lances dans des tests fonctionnels, qui sont faits pour le genre de test que tu veux faire (je crois). Personnellement, je ne suis pas fan des tests fonctionnels (généralement lourds à maintenir), et j'ai plutôt tendance à suivre la méthode décrite précédemment. Mais tu peux te renseigner dessus.

Discussions similaires

  1. Send_mail dans les tests unitaires
    Par Snooky68 dans le forum Django
    Réponses: 0
    Dernier message: 05/03/2012, 17h57
  2. Erreur tres bizarre dans un test unitaire
    Par BlueMagma dans le forum Django
    Réponses: 3
    Dernier message: 14/09/2011, 17h26
  3. [EasyMock] utilisation des mock dans les test unitaires.
    Par jeremieG dans le forum Tests et Performance
    Réponses: 7
    Dernier message: 16/07/2010, 17h10
  4. [XP] est-ce que "if" peut apparaitre dans un test unitaire?
    Par wl1979 dans le forum Méthodes Agiles
    Réponses: 3
    Dernier message: 14/08/2009, 19h59
  5. Calcul de la profondeur dans les tests unitaires
    Par alex.nd4 dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 26/02/2009, 16h08

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