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 -