Test clojurescript

12 views
Skip to first unread message

Arnaud Bailly

unread,
Sep 2, 2014, 3:41:47 PM9/2/14
to cloju...@googlegroups.com
Hello,

J'aimerais bien écrire des tests pour mes composants Om. J'ai regardé ce qui est proposé sur le site: https://github.com/swannodette/om/wiki/Testing et https://github.com/sgrove/omchaya mais je ne suis pas très convaincu. Il y a aussi https://github.com/cemerick/clojurescript.test mais comment dire, là aussi, c'est vraiment très compliqué pour écrire des tests, je trouve. 

Avant que je regarde comment adapter mes tests tests jasmine ou explorer des frameworks plus récents en js, quelqu'un aurait il une solution à me suggérer ? J'ai besoin d'une solution pour tester des modifications sur le DOM, pas uniquement du pur code.

Je dois rater quelque chose...

--
Arnaud Bailly
FoldLabs Associate: http://foldlabs.com

Khalid Jebbari

unread,
Sep 2, 2014, 4:24:37 PM9/2/14
to cloju...@googlegroups.com
Je ne sais pas pour Om, mais pour React, tu peux :
- charger tes composants dans une page et interagir et tester avec Sélénium/FluentLenium ou PhantomJS/CasperJS. 
- appeler React.renderComponentToString/renderComponentToStaticMarkup qui renvoie une string HTML. Bof.
- regarder les Tests Utilities de React : http://facebook.github.io/react/docs/test-utils.html
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "clojure-fr".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse clojure-fr+...@googlegroups.com.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.

Arnaud Bailly

unread,
Sep 2, 2014, 4:35:10 PM9/2/14
to cloju...@googlegroups.com
J'ai jeté un oeil à ces derniers, bof, bof... il faut avoir accès à la classe React qui est encapsulée dans Om j'ai l'impression.

Quant à la solution Selenium, je préfèrerais y recourir un peu plus tard, c'est pas vraiment adapter pour de l'unitaire.

Merci en tout cas, je continue à chercher...

--
Arnaud Bailly
FoldLabs Associate: http://foldlabs.com


Khalid Jebbari

unread,
Sep 2, 2014, 4:55:40 PM9/2/14
to cloju...@googlegroups.com
Je viens d'y penser : Facebook utilise Jest, un framework de test construit au dessus de Jasmine. Il crée un fajr DOM si jamais tu le veux pas du vrai DOM de Sélénium ou autre. Cet exemple de la doc de Jest explique comment tester React : http://facebook.github.io/jest/docs/tutorial-react.html#content 

Ça m'a donné une idée :

Pour Om, ce que tu peux faire je pense, c'est charger ton composant dans un DOM (vrai ou fake). Trouve le composant et interagit avec lui, en utilisant s'il le faut les Tests Utilities de React (pas sûr que ça fonctionne avec Om). Ça déclenchera sûrement un changement d'état dans l'atom géré par Om. Tu pourras ensuite vérifier l'état de l'atom. Ça permet sûrement de faire des tests unitaires. Dans le DOM tu pourras tester si le rendu est correct. 

Note : j'ai jamais testé, pas encore utilisé Om, c'est juste une idée. Je ne sais pas ce que ça vaut. Qu'en pensez-vous ?

Le 2 sept. 2014 à 21:41, Arnaud Bailly <arnaud...@gmail.com> a écrit :

--

Arnaud Bailly

unread,
Sep 3, 2014, 1:10:12 AM9/3/14
to cloju...@googlegroups.com
Oui, j'ai vu cette page et effectivement ça a l'air séduisant, mais je ne vois pas (encore ?) comment interfacer jest avec Om sachant que le TestUtils de React s'appuie sur les objets React évidemment. Doit y avoir moyen de le faire avec des ref probablement....

C'est l'approche dont tu parles que je veux implémenter effectivement. C'est l'idée de la pyramide de tests : les tests Selenium coûtent cher, donc on en fait peu mais large, et on utilise d'autres techniques pour faire du TDD sur les différents composants. En plus, la structure d'Om (et React) devrait  s'y prêter particulièrement bien vu qu'on travaille avec des fonctions et des objets immuables, modulo les problèmes liés à l'asynchronisme. 

--
Arnaud Bailly
FoldLabs Associate: http://foldlabs.com


Khalid Jebbari

unread,
Sep 3, 2014, 1:31:00 AM9/3/14
to cloju...@googlegroups.com
Sans les TestUtils, Jest par exemple s'appuie sur jsdom, une réimplémentation du DOM sur Node.js. Du coup de pas de navigateur à lancer, pas de Sélénium etc. C'est du cli bien plus rapide qu'un browser. Du coup tu pourrais t'en servir comme d'un Sélénium à faible coup en temps d'exécution : naviguer sur des pages, interagir avec le DOM etc. Ça peut faire l'affaire pour des tests unitaires. 

Arnaud Bailly

unread,
Sep 3, 2014, 1:38:56 AM9/3/14
to cloju...@googlegroups.com
C'est exactement ce que je veux faire. Et d'ailleurs c'est ce que je faisais il y a déjà quelques années avec rhino pour des tests pure JS dans des appris web Java. Le temps passe...

--
Arnaud Bailly
FoldLabs Associate: http://foldlabs.com


Hiram MADELAINE

unread,
Sep 3, 2014, 2:50:47 AM9/3/14
to clojure-fr
Bonjour,

Je me pose les mêmes questions que toi Arnaud, car je suis en train d'écrire une librairie basée sur Om et pour le moment ma suite de tests est famélique.
Je vais donc m'y plonger et partager mes retours d'expérience.

Hiram
Hiram MADELAINE
Eloquent Logic
96, rue La Fayette 75010 Paris
+33 6 11 51 37 71
Reply all
Reply to author
Forward
0 new messages