<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Robusta : Java &#38; RESTful Web Services &#187; JsUnit</title>
	<atom:link href="https://blog.developpez.com/java_rest/pcategory/web-2-0/jsunit/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/java_rest</link>
	<description></description>
	<lastBuildDate>Fri, 24 Dec 2010 11:23:17 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>A la base, je n&#8217;ai rien contre Internet Explorer</title>
		<link>https://blog.developpez.com/java_rest/p5675/xml/web_a_la_base_je_n_ai_rien_contre_intern</link>
		<comments>https://blog.developpez.com/java_rest/p5675/xml/web_a_la_base_je_n_ai_rien_contre_intern#comments</comments>
		<pubDate>Mon, 12 May 2008 14:35:21 +0000</pubDate>
		<dc:creator><![CDATA[nicorama]]></dc:creator>
				<category><![CDATA[JsUnit]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Mais les images parlent d&#8217;elles-mêmes : Après cette accroche quelque peu racoleuse, je m&#8217;explique : JsUnit est un outil permettant de tester ses fonctions écrit en JavaScript. C&#8217;est tout simplement l&#8217;équivalent Javascript de JUnit. J&#8217;ai programmé mes tests au fur et à mesure en utilisant Firefox, puis à la fin de la semaine, je me suis rappelé l&#8217;existence d&#8217;Internet Explorer. Au vu des résultats, je me suis dit que la compatibilité présumée de Prototype envers [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Mais les images parlent d&rsquo;elles-mêmes :</p>
<table width="100%" border="0">
<tr>
<td><img src="http://nicolas-zozol.ftp-developpez.com/blog/junit-ff-ie/Avec%20FF.png" alt="Avec FF" title="Avec Firefox" /></td>
<td><img src="http://nicolas-zozol.ftp-developpez.com/blog/junit-ff-ie/AvecIE.png" alt="Avec IE" title="Avec IE" /></td>
</tr>
</table>
<p>Après cette accroche quelque peu racoleuse, je m&rsquo;explique :<br />
<a href="http://www.jsunit.net/">JsUnit </a>est un outil permettant de tester ses fonctions écrit en JavaScript. C&rsquo;est tout simplement l&rsquo;équivalent Javascript de JUnit. J&rsquo;ai programmé mes tests au fur et à mesure en utilisant Firefox, puis à la fin de la semaine, je me suis rappelé l&rsquo;existence d&rsquo;Internet Explorer. Au vu des résultats, je me suis dit que la compatibilité présumée de Prototype envers FF et IE allait prendre du plomb dans l&rsquo;aile. Il m&rsquo;a donc fallu chercher l&rsquo;origine de ces bugs.</p>
<p><span id="more-17"></span></p>
<h3>Première partie : des variations minimes mais suffisantes</h3>
<p>Les lecteurs avisés me diront que je ne teste pas la même chose, puisque j&rsquo;ai 56 tests sur FireFox et 59 sur IE. C&rsquo;est parce que JUnit sous IE s&rsquo;amuse à évaluer des fonctions telles que celle-ci :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/** <br />
function testControllers(){}; <br />
*/</div></div>
<p><center>***</center></p>
<p> Avec Prototype, j&rsquo;ai  étendu l&rsquo;objet Element pour y mettre la fonction getParentElement() qui  renvoit le paragraph le plus proche de l&rsquo;élément.<br />
  J&rsquo;utilise donc la ligne :<strong> parent=element.up(&quot;.paragraph&quot;);</strong><br id="s2ok" /><br />
  IE  me renvoit une erreur &quot;Not Implemented&quot;. Je pensais qu&rsquo;il y  avait une erreur avec l&rsquo;implémentation de up() par  Prototype mais en fait mÔnsieur Internet Explorer n&rsquo;accepte pas le nom de variable parent. Essayez<strong> parent=&quot;&quot;</strong> ou <strong>parent=&quot;java&quot;</strong> et vous aurez une erreur &quot;Not Implemented&quot;.<br id="me:o" /><br />
En déclarant la variable<strong> var parent=&quot;&quot;</strong>, tout va mieux.</p>
<p><center>***</center></p>
<p> Il faut ensuite savoir que lorsque vous écriver du code HTML, les moteurs de Firefox et IE les réécrivent derrière vous. Cela se voit en utilisant <strong>alert(monElement.innerHTML)</strong>. J&rsquo;ai repéré deux problèmes notables :</p>
<p>Internet Explorer réécrit <strong><input value=I number=&quot;I&quot;></strong>  au lieu de <strong><input value=&quot;I&quot; number=&quot;I&quot;></strong>. Les guillemets de l&rsquo;attribut value disparait : ce qui fait que value n&rsquo;est d&rsquo;ailleurs plus un attribut au sens xml. Assez génant pour  les tests unitaires tels que celui-ci :<br />
  <strong>assertTrue (divControllers.innerHTML.include(&lsquo; value=&quot;I&quot; &lsquo;));</strong></p>
<p><center>***</center></p>
<p>Internet Explorer réécrit ses balises en majuscules. InnerHTML renvoit H3 au lieu de h3. Il faut donc réécrire les tests :<br />
   <strong>assertTrue(divForm.innerHTML.toLowerCase().include(&lsquo;h3&prime;));</strong><br />
au lieu de   :<br />
   <strong>assertTrue(divForm.innerHTML.include(&lsquo;h3&prime;));</strong></p>
</p>
<h3>Deuxième partie : Le XML avec Prototype</h3>
<p>Dans mes tests unitaires, j&rsquo;utilise une String :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; var result=&amp;quot;&lt;object&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;lastname&gt;Zozol&lt;/lastname&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;firstname&gt;Nicolas&lt;/firstname&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;web-site&gt;http://www.edupassion.com&lt;/web-site&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;identifiant&gt;1&lt;/identifiant&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;role&gt;professeur&lt;/role&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;level&gt;admin&lt;/level&gt;&amp;quot;+ <br />
&nbsp; &amp;quot;&lt;/object&gt;&amp;quot;;</div></div>
<p>Et je teste ma fonction sensée recevoir transport.responseText.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; transport=new Object(); <br />
&nbsp; transport.responseText=result; <br />
&nbsp; assertTrue(maFonction(result)==&amp;quot;tout va bien&amp;quot;);</div></div>
<p>Une fonction utilisant transport.responseText est à priori plus facile à tester qu&rsquo;une autre utilisant transport.responseXML.</p>
<p>  <strong>result.select(&quot;firstname&quot;)[0].innerHTML</strong>  fonctionne très bien sous FireFox et me renvoit &laquo;&nbsp;Nicolas&nbsp;&raquo;. Mais sous IE, impossible de parser un  élément non inscrit dans le document ! Prototype fonctionne bien, mais  considère, sous IE, <strong>result </strong>comme une string, et pas comme un ensemble  d&rsquo;élément organisés en arbre. Il est donc nécessaire de passer par responseXML et d&rsquo;ignorer ici les avantages de Prototype.</p>
<p>Le test unitaire de la fonction traitant le résultat devient plus compliqué : le Mock object n&rsquo;est plus une String mais un document. Si vous avez une petite fonction fiable transformant mon  String en document XML, je suis preneur.</p>
<h3>Finalement, on y arrive.</h3>
<table width="100%" border="0">
<tr>
<td><img src="http://nicolas-zozol.ftp-developpez.com/blog/junit-ff-ie/result-final.png" alt="Resultat" title="Résultat" /></td>
</tr>
</table>
<p><br id="fapi" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
