QUnit - Módulos Aninhados

Módulos com funções de teste agrupadas são usados ​​para definir módulos aninhados. QUnit executa testes no módulo pai antes de se aprofundar nos aninhados, mesmo se eles forem declarados primeiro. obeforeEach e afterEachretornos de chamada em uma chamada de módulo aninhado serão empilhados no modo LIFO (último a entrar, primeiro a sair) para os ganchos pai. Você pode especificar o código a ser executado antes e depois de cada teste usando o argumento e ganchos.

Os ganchos também podem ser usados ​​para criar propriedades que serão compartilhadas no contexto de cada teste. Quaisquer propriedades adicionais no objeto ganchos serão adicionadas a esse contexto. O argumento hooks é opcional se você chamar QUnit.module com um argumento callback.

O retorno de chamada do módulo é invocado tendo o contexto como ambiente de teste, com as propriedades do ambiente copiadas para os testes do módulo, ganchos e módulos aninhados.

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

Verifique a saída

Você deve ver o seguinte resultado -