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.