Skip to main content
JavaScript & the browser·Module C8 · Lesson 1
TaskDefine assert(cond, msg) that throws Error('assert: ' + msg) when !cond. Define assertEqual(actual, expected, msg) that throws when actual !== expected with a clear message. Call assert(2+2===4, 'math'); assertEqual(2+2, 4, 'sum'); try assertEqual(1,2,'one') in try/catch and log err.message.

Assertion functions — the foundation

75 XP6 min
Theory

What an assertion is

An assertion is a function that throws if its condition is false. That's it. Every test framework — node:test, Vitest, Jest — is built on top of this two-line primitive.

function assert(cond, msg) {
  if (!cond) throw new Error("assertion failed: " + (msg || "no message"));
}
assert(1 + 1 === 2, "math still works"); // passes silently
assert(1 + 1 === 3, "math broke");       // throws

Why this is the right starting point

  • No magic. You can implement it yourself in 30 seconds.
  • Composes with try/catch — a test that doesn't throw is a passing test.
  • Stack trace points at the assertion line, not the helper.

assertEqual

A common shortcut for equality checks — same idea, better failure message:

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

This is the entire skeleton. C8-02 makes the failure message useful for objects.

🔒

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.