QUnit - Modules imbriqués

Des modules avec des fonctions de test groupées sont utilisés pour définir des modules imbriqués. QUnit exécute des tests sur le module parent avant d'approfondir les imbriqués, même s'ils sont déclarés en premier. lebeforeEach et afterEachles rappels sur un appel de module imbriqué seront empilés en mode LIFO (dernier entré, premier sorti) aux hooks parents. Vous pouvez spécifier le code à exécuter avant et après chaque test à l'aide de l'argument et des hooks.

Les hooks peuvent également être utilisés pour créer des propriétés qui seront partagées sur le contexte de chaque test. Toutes les propriétés supplémentaires de l'objet hooks seront ajoutées à ce contexte. L'argument hooks est facultatif si vous appelez QUnit.module avec un argument de rappel.

Le rappel du module est appelé avec le contexte comme environnement de test, avec les propriétés de l'environnement copiées dans les tests, les hooks et les modules imbriqués du module.

<html>
   <head>
      <meta charset = "utf-8">
      <title>QUnit basic example</title>
      <link rel = "stylesheet" href = "https://code.jquery.com/qunit/qunit-1.22.0.css">
      <script src = "https://code.jquery.com/qunit/qunit-1.22.0.js"></script>
   </head>
   
   <body>
      <div id = "qunit"></div>
      <div id = "qunit-fixture"></div> 
      <script>
         QUnit.module( "parent module", function( hooks ) {
            hooks.beforeEach( function( assert ) {
               assert.ok( true, "beforeEach called" );
            });

            hooks.afterEach( function( assert ) {
               assert.ok( true, "afterEach called" );
            });

            QUnit.test( "hook test 1", function( assert ) {
               assert.expect( 2 );
            });

            QUnit.module( "nested hook module", function( hooks ) {
               // This will run after the parent module's beforeEach hook
               hooks.beforeEach( function( assert ) {
                  assert.ok( true, "nested beforeEach called" );
               });

               // This will run before the parent module's afterEach
               hooks.afterEach( function( assert ) {
                  assert.ok( true, "nested afterEach called" );
               });

               QUnit.test( "hook test 2", function( assert ) {
                  assert.expect( 4 );
               });
            });
         });
      </script>

      <div id = "console" ></div>
   </body>
</html>

Vérifiez la sortie

Vous devriez voir le résultat suivant -