Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

jest-plugin-must-assert

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jest-plugin-must-assert

Jest plugin for async tests

  • 1.0.0
  • npm
  • Socket score

Version published
Weekly downloads
5.6K
decreased by-52.09%
Maintainers
1
Weekly downloads
 
Created
Source

jest-plugin-must-assert

A plugin extending the default Jest behavior to fail any tests which do not perform a runtime assertion.

Problem

Asynchronous tests could be challenging to get right, particulrary for junior developers or Engineers new to async JavaScript. The most common mistake is an async test which does not fire any assertions, either due to logic or even syntax errors. Static analysis(linters) gets close to pointing out the issues, but is not enough to catch logic mistakes. For this, we require a runtime check that some assertion was ran during the test.

Jest, unfortunately, has not "failWithoutAssertions" configuration options, so this plugin aims to remedy that. The plugin patches Jest API to force tests without any assertions to fail. In addition to failing tests without assertions this plugin also patches a bug in Jest which leads to assertions "leaking" accross different tests.

Install

npm i -D jest-plugin-must-assert

For default behavior, add the plugin to your setup files.

Use

...
setupFilesAfterEnv: ['jest-plugin-must-assert'],
...

You may also extend the default behavior with the following, manual configuration.

// <rootDir>/must-assert-setup.js
const mustAssert = require('jest-plugin-must-assert/manual');

mustAssert({
  /**
   * Control the task execution during a test. You may log a custom warning message
   * from here, throw an error etc.
   *
   * Default: The default behavior is that mismatched testIds result in ignoring of the task
   * and a warning message.
   *
   * @param {Number} originTestId  The unique ID of the test where the task is oginating from
   * @param {Number} currentTestId The unique ID of the currently executing test
   * @param {Function} log         The log method (logger.warn)
   *
   * @return {Boolean} true/false for whether or not the task should execute
  onInvokeTask(originTestId, currentTestId, log) {
    return false;
  }
  logger,
});

Then in your config file:

...
setupFilesAfterEnv: [
  '<rootDir>/must-assert-setup'
],
...

Performance

There is some performance implications of using this plugin as it does add a bit of overhead, but from testing it's a trivial increase. This plugin has been tested within a project with 1600+ test suites and over 10k individual tests, with only a negligble slow-down.

Keywords

FAQs

Package last updated on 18 Apr 2019

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