2017-02-15 1 views
0

Actuellement, lorsque j'utilise sinon dans un Groovy-spock lorsque:, seul le if est exécuté et le else ne l'est pas. Existe-t-il un autre moyen d'implémenter if-else dans les tests spock? J'ai essayé de changer de boîtier et j'ai rencontré la même chose.Utilisation de l'instruction if-else à l'intérieur du test Groovy-spock

if (value == 'x' || 'y' || 'z') { 
    //execute below info 
} else if (value == 'a') { 
    //execute below info 
} 
+0

pourquoi avez-vous ceci: '' '|| 'y' || 'y' '' '? – dsharew

Répondre

1

En raison de la vérité groovy « y » est traité comme booléen vrai, voilà pourquoi autre n'est pas exécuté.

Probablement que vous avez essayé d'évaluer ceci:

if (value == 'x' || value == 'y' || value == 'y') { 
    //execute below info 
} else if (value == 'z'){ 
    //execute below info 
} 

Mais vous pouvez également essayer de modifier le si l'expression à:

if (value in ['x', 'y', 'y']) {...} 
+0

J'ai utilisé le second, ça marche. Merci de votre aide! :) – Rebeller

0

Je ne sais pas si je dois faire un commentaire ou une réponse.

Votre code sous le bloc else ne s'exécute pas car value == 'x' || 'y' || 'y' est toujours vrai car le littéral de caractère 'y' est toujours évalué à true.

Les chaînes non-vides, GStrings et CharSequences sont forcées à true.

Essayez ceci: if (value == 'x' || value == 'y')

+0

J'ai compris. Merci Degen! – Rebeller