form_testing_documentation.html.svn-base
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 350 行 · 第 1/2 页
SVN-BASE
350 行
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Documentation SimpleTest : tester des formulaires HTML</title><link rel="stylesheet" type="text/css" href="docs.css" title="Styles"></head><body><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><h1>Documentation sur les tests de formulaire</h1> This page... <ul><li> Modifier les valeurs d'un formulaire et <a href="#submit">r茅ussir 脿 transmettre un simple formulaire</a> </li><li> G茅rer des <a href="#multiple">objets 脿 valeurs multiples</a> en initialisant des listes. </li><li> Le cas des formulaires utilisant Javascript pour modifier <a href="#hidden-field">un champ cach茅</a> </li><li> <a href="#brut">Envoi brut</a> quand il n'existe pas de bouton 脿 cliquer. </li></ul><div class="content"> <p><a class="target" name="submit"><h2>Valider un formulaire simple</h2></a></p> <p> Lorsqu'une page est t茅l茅charg茅e par <span class="new_code">WebTestCase</span> en utilisant <span class="new_code">get()</span> ou <span class="new_code">post()</span> le contenu de la page est automatiquement analys茅. De cette analyse d茅coule le fait que toutes les commandes 脿 l'int茅rieur de la balise <form> sont disponibles depuis l'int茅rieur du sc茅nario de test. Prenons par exemple cet extrait de code HTML...<pre><form> <input type="text" name="a" value="A default" /> <input type="submit" value="Go" /></form></pre> Il ressemble 脿... </p> <p> <form class="demo"> <input type="text" name="a" value="A default"> <input type="submit" value="Go"> </form> </p> <p> Nous pouvons naviguer vers ce code, via le site <a href="http://www.lastcraft.com/form_testing_documentation.php">LastCraft</a>, avec le test suivant...<pre>class SimpleFormTests extends WebTestCase { <strong> function testDefaultValue() { $this->get('http://www.lastcraft.com/form_testing_documentation.php'); $this->assertField('a', 'A default'); }</strong>}</pre> Directement apr猫s le chargement de la page toutes les commandes HTML sont initi茅es avec leur valeur par d茅faut, comme elles appara卯traient dans un navigateur web. L'assertion teste qu'un objet HTML avec le nom "a" existe dans la page et qu'il contient la valeur "A default". </p> <p> Nous pourrions retourner le formulaire tout de suite, mais d'abord nous allons changer la valeur du champ texte. Ce n'est qu'apr猫s que nous le transmettrons...<pre>class SimpleFormTests extends WebTestCase { function testDefaultValue() { $this->get('http://www.my-site.com/'); $this->assertField('a', 'A default');<strong> $this->setField('a', 'New value'); $this->clickSubmit('Go');</strong> }}</pre> Parce que nous n'avons sp茅cifi茅 ni attribut "method" sur la balise form, ni attribut "action", le sc茅nario de test suivra le comportement classique d'un navigateur : transmission des donn茅es avec une requ锚te <em>GET</em> vers la m锚me page. SimpleTest essaie d'茅muler le comportement typique d'un navigateur autant que possible, plut么t que d'essayer d'attraper des attributs manquants sur les balises. La raison est simple : la cible d'un framework de test est la logique d'une application PHP, pas les erreurs -- de syntaxe ou autres -- du code HTML. Pour les erreurs HTML, d'autres outils tel <a href="http://www.w3.org/People/Raggett/tidy/">HTMLTidy</a> devraient 锚tre employ茅s. </p> <p> Si un champ manque dans n'importe quel formulaire ou si une option est indisponible alors <span class="new_code">WebTestCase::setField()</span> renverra <span class="new_code">false</span>. Par exemple, supposons que nous souhaitons v茅rifier qu'une option "Superuser" n'est pas pr茅sente dans ce formulaire...<pre><strong>Select type of user to add:</strong><select name="type"> <option>Subscriber</option> <option>Author</option> <option>Administrator</option></select></pre> Qui ressemble 脿... </p> <p> <form class="demo"> <strong>Select type of user to add:</strong> <select name="type"> <option>Subscriber</option> <option>Author</option> <option>Administrator</option> </select> </form> </p> <p> Le test suivant le confirmera...<pre>class SimpleFormTests extends WebTestCase { ... function testNoSuperuserChoiceAvailable() {<strong> $this->get('http://www.lastcraft.com/form_testing_documentation.php'); $this->assertFalse($this->setField('type', 'Superuser'));</strong> }}</pre> La s茅lection ne sera pas chang茅e suite 脿 un 茅chec d'initialisation d'une valeur sur un objet. </p> <p> Voici la liste compl猫te des objets support茅s 脿 aujourd'hui... <ul> <li>Champs texte, y compris les champs masqu茅s (hidden) ou crypt茅s (password).</li> <li>Boutons submit, en incluant aussi la balise button, mais pas encore les boutons reset</li> <li>Aires texte (textarea) avec leur gestion des retours 脿 la ligne (wrap).</li> <li>Cases 脿 cocher, y compris les cases 脿 cocher multiples dans un m锚me formulaire.</li> <li>Listes 脿 menu d茅roulant, y compris celles 脿 s茅lections multiples.</li> <li>Boutons radio.</li> <li>Images.</li> </ul> </p>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?