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