Skip to main content
← ⚑ JavaScript & the browserΒ·Module C8 Β· Lesson 5
TaskAdd describe(name, fn) that nests its tests under "<parent> > <name>". Inside describe('cart', () => {}) register 'totals zero when empty' (assert([].reduce((s,x)=>s+x,0)===0)) and 'sums non-empty' (assert([1,2,3].reduce((s,x)=>s+x,0)===6)). runAll() should print both with the 'cart > ' prefix.

Grouping with describe()

125 XP9 min
Theory

Nested test groups

describe(name, fn) groups related tests. The runner shows their names with the parent prefix, so failures are organized.

let currentSuite = "";
function describe(name, fn) {
  const prev = currentSuite;
  currentSuite = prev ? prev + " > " + name : name;
  fn();
  currentSuite = prev;
}

function test(name, fn) {
  tests.push({ name: currentSuite ? currentSuite + " > " + name : name, fn });
}

Now you can:

describe("cart", () => {
  test("totals zero when empty", () => { ... });
  test("applies discount", () => { ... });
});

Output:

PASS cart > totals zero when empty
PASS cart > applies discount

Nested describes

describe can call describe. The current-suite variable is restored when each block returns, so siblings don't see each other's prefix.

πŸ”’

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β€” card required, cancel anytime.

Sign up β€” free trial β†’

First 10 lessons in each track are free. No card needed for those.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

Short, hand-written, no spam. Unsubscribe in one click.