Skip to content

Latest commit

 

History

History

assert

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

assert

npm package

@jsenv/assert is the NPM package used by jsenv to write tests.

It can be resumed by the following quote:

equal() is my favorite assertion. If the only available assertion in every test suite was equal(), almost every test suite in the world would be better for it.

— Eric Elliot in Rethinking Unit Test Assertion

Example

import { assert } from "@jsenv/assert";

assert({
  actual: {
    foo: true,
  },
  expect: {
    foo: false,
  },
});

img

There is 200+ examples in ./tests/

How it works

assert does nothing when comparison is successfull but throws an error when comparison is failing.

Features

Colors

The message produced have colors that helps to see the diff. Each color have a meaning described below:

Color Meaning
grey same in actual and expect
red different from expect
green different from actual
yellow exists only in actual / exists only in expect

JavaScript aware

Comparison understands JavaScript and makes the diff more redable

assert({
  actual: 149600000,
  expect: 1464301,
});

img

This includes things like comparison on url parts, date parts, http headers and many more.

Multiline diff

assert({
  actual: {
    foo: `Hello,
my name is Benjamin
and my brother is joe`,
  },
  expect: {
    foo: `Hello,
my name is Ben
and my brother is joe`,
  },
});

img

Keep long diff readable

assert({
  actual: "http://example_that_is_quite_long.com/dir/file.txt",
  expect: "http://example_that_is_quite_long.com/dir/file.css",
});

img

Keep nested diff readable

When the diff is very deep the message omits the parents to keep the message concise and readable

assert({
  actual: {
    the: {
      nesting: {
        is: {
          very: {
            deep: {
              in: {
                this: {
                  one: {
                    foo: {
                      a: true,
                      tata: { test: true, bar: { a: "1" } },
                    },
                  },
                },
              },
            },
          },
        },
      },
    },
  },
  expect: {
    the: {
      nesting: {
        is: {
          very: {
            deep: {
              in: {
                this: {
                  one: {
                    foo: false,
                  },
                },
              },
            },
          },
        },
      },
    },
  },
});

img

Custom assertions

assert({
  actual: 50,
  expect: assert.between(100, 200),
});

img

And much more

Usage in Node.js

npm i --save-dev @jsenv/assert
import { assert } from "@jsenv/assert";

assert({
  actual: true,
  expect: false,
});

Usage in a browser

Using NPM

npm i --save-dev @jsenv/assert
<script type="module">
  import { assert } from "@jsenv/assert";

  assert({
    actual: true,
    expect: false,
  });
</script>

Using CDN

<script type="module">
  import { assert } from "https://unpkg.com/@jsenv/assert@latest";

  assert({
    actual: true,
    expect: false,
  });
</script>