New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@jsenv/assert

Package Overview
Dependencies
Maintainers
0
Versions
83
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jsenv/assert

One assertion to test everything

  • 4.4.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

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:

ColorMeaning
greysame in actual and expect
reddifferent from expect
greendifferent from actual
yellowexists 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

  • Support comparison between value having circular references
  • Can detect diff on prototypes
  • Can detect diff on object integrity (Object.freeze, Object.seal and Object.preventExtensions)
  • Can detect diff on property descriptors
  • Can detect diff on symbols

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>

FAQs

Package last updated on 06 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc