Skip to content

xasdx/testr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

testr

Build Status

A test framework with zero dependencies

Packages

This monorepo contains all subpackages related to the Testr framework.

Version Package Description
Not released @testr/runnr Runs simple unit tests
Not released @testr/io Creates concise test cases to be executed by @testr/runnr
Not released @testr/reportr Reports test results
Not released @testr/doublr Substitutes dependencies with test doubles

Example

Let us assume you are working on the following module:

let addOne = n => n + 1

let multiply = (n, m) => n * m

let findUsers = (repository, query) => {
  let users = repository.find(query)
  return users.map(user => {
    return {
      name: `${user.firstName} ${user.lastName}`
    }
  })
}

module.exports = { addOne, multiply, findUsers }

And since you care about your code, you are contemplating to add some test coverage. You have time constraints, so you need this fast and you hate boilerplate anyways.

With testr you can write concise specs like:

let { unit, io, throws, random, type, like, called } = require("testr")

unit({ addOne, multiply, findUsers }).specs({
  addOne: [
    io(5, 6),
    io(9, type.number),
    io(true, throws),
    io(random.number, type.number),
    io({ in: [6], out: 7 })
  ],
  multiply: io(3, 4, 12),
  findUsers: [
    io(mockRepository, { country: "Hungary" }, like([{ name: type.string }])),
    io(mockRepository, {}, [
      called(mockRepository.find, {}),
      result => console.log(result.length)
    ])
  ]
})

About

A test framework with zero dependencies

Resources

Stars

Watchers

Forks

Packages

No packages published