Don't mutate data between tests

Imagine we have the following functions to test:

// math.ts
const add = (a: number, b: number) => a + b
const substract = (a: number, b: number) => a + b

Here's how to not write tests:

❌❌❌

describe('test math module', () => {
  let a = 3
  let b = 5
  test('adding', () => {
    expect(add(a, b)).toBe(8)
  })
  test('subtracting', () => {
    // ❌ don't mutate data between tests
    b = 10
    expect(subtract(a, b)).toBe(-7)
  })
})

Here's how to correctly write tests:

✅✅✅

describe('test math module', () => {
  test('adding', () => {
    const a = 3
    const b = 5
    expect(add(a, b)).toBe(8)
  })
  test('subtracting', () => {
    // ✅ set up your own variables
    const a = 3
    const b = 10
    expect(subtract(a, b)).toBe(-7)
  })
})

You might want omit writing variables a and b and put them inline, like so:

expect(subtract(3, 10)).toBe(-7)

Why you shouldn't mutate data between tests?

  • the test is no longer self containing, so one test relies on another, which is a bad thing
  • if we reorder the tests (first subtracting, then adding), then the test will fail
  • data mutation is generally a bad thing, especially if you're using React which sits on top of functional programming fundamentals

results matching ""

    No results matching ""