Pacharapol Withayasakpunt Pacharapol Withayasakpunt
Sun 5 January 2020

What is a best way to organize Test Suites / Test Cases in JavaScript?

  • Do you put test cases in JSON / YAML or in separate JavaScript files?
  • What keys do you put for each cases, such as Name, Assertion, Result?
  • Do you print, i.e. console.log / console.dir(..., {depth: null}), results?
  • Do you write "expect to fail" tests?

In my latest project, I use ts-mocha.

I put my test cases in JavaScript file, rather than JSON, because I need some special value (undefined).

My test cases is an array of ITestSuite.

interface ITestSuite {
  name: string
  cond: any
  expect: (result: any[]) => boolean
  obj: any

I console.log test results, as well as do automated assert, using standard library import assert from 'assert'.

import deepfind from '.'
import assert from 'assert'

const testSuite: ITestSuite[] = [

testSuite.forEach((t) => {
  describe(, () => {
    it(, () => {
      const r = deepfind(t.obj, t.cond)

I didn't write "expect to fail" tests, but I did test in semi-production, using real Webpack config.

I also put yarn test inside yarn prebuild; and I put yarn build inside yarn prepack.

I also had some experience with testing on Travis CI, but I didn't set it up this nice; which might be nice if I plan to "branch and merge".




Deep find a primitive, an Array or a plain Object inside an Array or a plain Object, so that you can edit the Object - patarapolw/deepfind