Unitest

test deno land deno version deno doc codecov

Deno-first universal unit testing framework


🚧 This is beta

Features

  • 🦕 Deno-first
    It has been designed with Deno first, and actively uses the Deno Runtime API.

  • 🌎 Universal
    It is also compatible to work in browsers and Node.js environments. Use the compatible compat module instead of the Deno Runtime API.

  • 🃏 Like jest but not jest
    You can express declarative tests around the symbolic expect in jest. Also, all matchers are composable and customizable. jest and jest-extended matchers are provided as presets.

  • ♻️ Compositable
    Unitest is also intended to be used in a browser.
    For this reason, we provide a composable interface to keep the bundle size as small as possible.

  • 📄 TypeScript-first
    Type-safe tests can be expressed. A type filter restricts the availability of only those matchers that satisfy the data type under test.
    It also keeps the bundle size small by transferring part of the data type validation to TypeScript.

  • 🐺 Isolated
    Each module is independent, with no dependency on context. This means that they can be combined with any module.

Getting Started

Visit https://unitest.vercel.app/ to get started with Unitest.

Quick view

import { expect, test } from "https://deno.land/x/unitest@$VERSION/mod.ts";

test({
  name: "should not equal",
  fn: () => {
    expect("Deno").not.toBe("Node");
  },
});

Contributing

Please see our CONTRIBUTING.md.

License

Copyright © 2021-present TomokiMiyauci.

Released under the MIT license

TODO

  • Implement expecter and jest default matcher (rest)
    • toMatchObject
    • toMatchSnapshot
    • toMatchInlineSnapshot
    • toStrictEqual
    • toThrowErrorMatchingSnapshot
    • toThrowErrorMatchingInlineSnapshot
  • Implement third party matcher (rest)
    • jest-extended
      • toBeArrayOfSize toHaveLength
      • toIncludeAllPartialMembers
      • toThrowWithMessage
      • toHaveBeenCalledBefore
      • toHaveBeenCalledAfter
      • toHaveBeenCalledOnce
      • toBeNaN exists in jest
      • toContainKey same as toHaveProperty
      • toContainAllKeys
      • toContainAllValues
      • toContainAllEntries
      • toResolve not pure
      • toReject not pure
      • toBeHexadecimal -> toBeHexColor
  • Implement interface of custom matcher
  • Implement test suite
  • Implement describe suite