jest-sequence
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

jest-sequence

codecov coverage npm TypeScript compatible

Testing sequence

A class perfoms some sync or async actions may looks for example like this:

class Test {
  other() {}
  first(num: number) { return num }
  second(str: string) { return str }

  async main() {
    await quant(1)
    this.first(1)
    this.other()
    await quant(1)
    this.second('test')
  }
}

To be sure that some of methods is called in appropriate order and at appropriate time and with required arguments the test spec may looks like this:

import { sequence, quant, timeout } from 'jest-sequence'

const methodsOfTestToWatch = [
  'main', 'first', 'second'
] as jest.FunctionPropertyNames<Test>[]

describe('test sequence', () => {
  afterEach(() => {
    jest.restoreAllMocks()
  })

  it('match known sequence', async () => {
    const test = new Test()
    const sequence = new Sequence()
    sequence.spyOn(Test.prototype, methodsOfTestToWatch)

    test.main()

    sequence.add(test, 'main', [])
    expect(sequence).toMatchSequence()
  
    await quant(1)
    sequence.add(test, 'first', [1])
    expect(sequence).toMatchSequence()

    await quant(1)
    sequence.add(test, 'second', ['test'])
    expect(sequence).toMatchSequence()
  })
})

The utility function timeout is just promisify setTimeout().

The utility function quant(x) is simple wrapper for timeout(x * quantDuration).

The variable quantDuration by default is 200ms and may be modified via environment variable JEST_SEQUENCE_QUANT.

As of now only one Sequence instance may be instantiated per test case or several instances per test case must not share same methods to spy on.

Methods received() and expected() returns internal representation of received and expected sequnces (received from spy method and added manually) respectively. This methods is just for reference (or debug) - representation of sequences is subject to change.

Method clean() - does empty of received and expected sequences.

Package Sidebar

Install

npm i jest-sequence

Weekly Downloads

0

Version

1.0.3

License

MIT

Unpacked Size

20.2 kB

Total Files

27

Last publish

Collaborators

  • oklas