form_testing_documentation.html.svn-base
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 350 行 · 第 1/2 页
SVN-BASE
350 行
<p> Le navigateur propos茅 par SimpleTest 茅mule les actions qui peuvent 锚tre r茅alis茅es par un utilisateur sur une page HTML standard. Javascript n'est pas support茅 et il y a peu de chance pour qu'il le soit prochainement. </p> <p> Une attention particuli猫re doit 锚tre port茅 aux techniques Javascript qui changent la valeur d'un champ cach茅 : elles ne peuvent pas 锚tre r茅alis茅es avec les commandes classiques de SimpleTest. Une m茅thode alternative est propos茅e plus loin. </p> <p><a class="target" name="multiple"><h2>Champs 脿 valeurs multiples</h2></a></p> <p> SimpleTest peut g茅rer deux types de commandes 脿 valeur multiple : les menus d茅roulants 脿 s茅lection multiple et les cases 脿 cocher avec le m锚me nom 脿 l'int茅rieur m锚me d'un formulaire. La nature de ceux-ci implique que leur initialisation et leur test sont l茅g猫rement diff茅rents. Voici un exemple avec des cases 脿 cocher...<pre><form class="demo"> <strong>Create privileges allowed:</strong> <input type="checkbox" name="crud" value="c" checked><br> <strong>Retrieve privileges allowed:</strong> <input type="checkbox" name="crud" value="r" checked><br> <strong>Update privileges allowed:</strong> <input type="checkbox" name="crud" value="u" checked><br> <strong>Destroy privileges allowed:</strong> <input type="checkbox" name="crud" value="d" checked><br> <input type="submit" value="Enable Privileges"></form></pre> Qui se traduit par... </p> <p> <form class="demo"> <strong>Create privileges allowed:</strong> <input type="checkbox" name="crud" value="c" checked><br> <strong>Retrieve privileges allowed:</strong> <input type="checkbox" name="crud" value="r" checked><br> <strong>Update privileges allowed:</strong> <input type="checkbox" name="crud" value="u" checked><br> <strong>Destroy privileges allowed:</strong> <input type="checkbox" name="crud" value="d" checked><br> <input type="submit" value="Enable Privileges"> </form> </p> <p> Si nous souhaitons d茅sactiver tous les privil猫ges sauf ceux de t茅l茅chargement (Retrieve) et transmettre cette information, nous pouvons y arriver par...<pre>class SimpleFormTests extends WebTestCase { ...<strong> function testDisableNastyPrivileges() { $this->get('http://www.lastcraft.com/form_testing_documentation.php'); $this->assertField('crud', array('c', 'r', 'u', 'd')); $this->setField('crud', array('r')); $this->clickSubmit('Enable Privileges'); }</strong>}</pre> Plut么t que d'initier le champ 脿 une valeur unique, nous lui donnons une liste de valeurs. Nous faisons la m锚me chose pour tester les valeurs attendues. Nous pouvons 茅crire d'autres bouts de code de test pour confirmer cet effet, peut-锚tre en nous connectant comme utilisateur et en essayant d'effectuer une mise 脿 jour. </p> <p><a class="target" name="hidden-field"><h2>Formulaires utilisant Javascript pour changer un champ cach茅</h2></a></p> <p> Si vous souhaitez tester un formulaire d茅pendant de Javascript pour la modification d'un champ cach茅, vous ne pouvez pas simplement utiliser setField(). Le code suivant <em>ne fonctionnera pas</em> :<pre>class SimpleFormTests extends WebTestCase { function testMyJavascriptForm() { <strong>// Ne fonctionne *pas*</strong> $this->setField('un_champ_cach茅', '123'); $this->clickSubmit('OK'); }}</pre> A la place, vous aurez besoin d'ajouter le param猫tre suppl茅mentaire du formulaire 脿 la m茅thode clickSubmit() :<pre>class SimpleFormTests extends WebTestCase { function testMyJavascriptForm() { // Ajoute le champ cach茅 comme variable POST suppl茅mentaire <strong>$this->clickSubmit('OK', array('un_champ_cach茅'=>'123'));</strong> }}</pre> </p> <p> N'oubliez pas que de la sorte, vous 锚tes effectivement en train de court-circuitez une partie de votre application (le code Javascript dans le formulaire) et que peut-锚tre serait-il plus prudent d'utiliser un outil comme <a href="http://selenium.openqa.org/">Selenium</a> pour mettre sur pied un test de recette complet. </p> <p><a class="target" name="brut"><h2>Envoi brut</h2></a></p> <p> Si vous souhaitez tester un gestionnaire de formulaire mais que vous ne l'avez pas 茅crit ou que vous n'y avez pas encore acc猫s, vous pouvez cr茅er un envoi de formulaire 脿 la main.<pre>class SimpleFormTests extends WebTestCase { ...<strong> function testAttemptedHack() { $this->post( 'http://www.my-site.com/add_user.php', array('type' => 'superuser')); $this->assertNoUnwantedPattern('/user created/i'); }</strong>}</pre> En ajoutant des donn茅es 脿 la m茅thode <span class="new_code">WebTestCase::post()</span>, nous essayons de t茅l茅charger la page via la transmission d'un formulaire. </p> </div> References and related information... <ul><li> La page du projet SimpleTest sur <a href="http://sourceforge.net/projects/simpletest/">SourceForge</a>. </li><li> La page de t茅l茅chargement de SimpleTest sur <a href="http://www.lastcraft.com/simple_test.php">LastCraft</a>. </li><li> <a href="http://simpletest.org/api/">L'API du d茅veloppeur pour SimpleTest</a> donne tous les d茅tails sur les classes et les assertions disponibles. </li></ul><div class="menu_back"><div class="menu"><a href="index.html">SimpleTest</a> | <a href="overview.html">Overview</a> | <a href="unit_test_documentation.html">Unit tester</a> | <a href="group_test_documentation.html">Group tests</a> | <a href="mock_objects_documentation.html">Mock objects</a> | <a href="partial_mocks_documentation.html">Partial mocks</a> | <a href="reporter_documentation.html">Reporting</a> | <a href="expectation_documentation.html">Expectations</a> | <a href="web_tester_documentation.html">Web tester</a> | <a href="form_testing_documentation.html">Testing forms</a> | <a href="authentication_documentation.html">Authentication</a> | <a href="browser_documentation.html">Scriptable browser</a></div></div><div class="copyright"> Copyright<br>Marcus Baker 2006 </div></body></html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?