Skip to main content
JavaScript & the browser·Module C8 · Lesson 4
TaskDefine computeTotal(items, discount) returning sum(qty*price)*(1-discount). Write a single test 'cart total with 10% discount' using Arrange/Act/Assert: cart = [{price:100,qty:2},{price:50,qty:1}], discount=0.1, expect 225. Use the runAll harness from C8-03.

Arrange–Act–Assert

100 XP7 min
Theory

Three sections per test

A good test reads as three blocks:

test("cart total includes discount", () => {
  // Arrange
  const cart = [{ price: 100, qty: 2 }, { price: 50, qty: 1 }];
  const discountPercent = 0.1;

  // Act
  const total = computeTotal(cart, discountPercent);

  // Assert
  assertEqual(total, 225, "discounted total");
});
  • Arrange — set up the inputs and dependencies.
  • Act — call the function under test once.
  • Assert — check the result.

Why this pattern survives

It separates "what state we're testing" from "what we're testing about it". When the test fails, you know which third broke — arrange (setup wrong), act (function changed signature), or assert (expectation wrong).

🔒

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.