Skip to main content
← ⚑ JavaScript & the browserΒ·Module C8 Β· Lesson 9
TaskWrite assertEqual(actual, expected, msg) producing the multi-line message: '<msg>\n expected: <json>\n actual: <json>'. Trigger a failure with assertEqual({a:1}, {a:2}, 'objects equal') in try/catch, log err.message.

Helpful failure output

100 XP7 min
Theory

A failing test should tell you everything

When a test fails, the message should answer: what did we expect, what did we get, and where? Bad failure messages cost minutes per debug session β€” multiplied by hundreds of failing CI runs per year, the cost compounds.

function assertEqual(actual, expected, msg) {
  if (actual !== expected) {
    throw new Error(
      \`${msg || "values differ"}\n  expected: ${JSON.stringify(expected)}\n  actual:   ${JSON.stringify(actual)}\n\`
    );
  }
}

Good vs bad

BAD:  Error: assert failed
GOOD: Error: cart total
        expected: 225
        actual:   220

The good version tells you WHICH assert, WHAT was expected, and WHAT actually came out β€” you can fix it without re-running in a debugger.

πŸ”’

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.