QUnit - Módulos anidados

Los módulos con funciones de prueba agrupadas se utilizan para definir módulos anidados. QUnit ejecute pruebas en el módulo principal antes de profundizar en los anidados, incluso si se declaran primero. losbeforeEach y afterEachlas devoluciones de llamada en una llamada de módulo anidado se apilarán en el modo LIFO (último en entrar, primero en salir) a los ganchos principales. Puede especificar el código que se ejecutará antes y después de cada prueba utilizando el argumento y los ganchos.

Los ganchos también se pueden utilizar para crear propiedades que se compartirán en el contexto de cada prueba. Cualquier propiedad adicional en el objeto hooks se agregará a ese contexto. El argumento hooks es opcional si llama a QUnit.module con un argumento de devolución de llamada.

La devolución de llamada del módulo se invoca teniendo el contexto como entorno de prueba, con las propiedades del entorno copiadas en las pruebas, los ganchos y los módulos anidados del módulo.

<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>

Verificar la salida

Debería ver el siguiente resultado: