jest-plugin-context

Adds context as an alternative to describe to jest.

Usage no npm install needed!

<script type="module">
  import jestPluginContext from 'https://cdn.skypack.dev/jest-plugin-context';
</script>

README

jest-plugin-context

npm npm npm

Adds context as an alternative to describe for jest.

Getting Started

Install jest-plugin-context using yarn:

yarn add --dev jest-plugin-context

Motivation

RSpec took the ruby world by storm with its declarative method of TDD. In RSpec, describe it used to wrap a set of tests against one functionality while context is to wrap a set of tests against one functionality under the same state.

The difference being you should only describe to test the User model and specifically describe the #name method. However, testing different states of the #name method should use different context. You can view an example of this below.

Usage

If you want, you can import context from jest-plugin-context at the top of every test:

import context from 'jest-plugin-context';

If you want to install context as a global, you can modify the jest section of your package.json to include:

"jest": {
  "setupFiles": [
    "jest-plugin-context/setup"
  ]
}

Example

Here's an example test that uses context:

describe('User', () => {

  describe('#name', () => {
    set('firstName', () => 'Harry');
    set('lastName', () => 'Potter');
    set('user', () => new User({firstName, lastName}));

    context('with blank first name', () => {
      set('firstName', () => null);

      it('should return only the last name', () => {
        expect(user.name).toEqual('Potter');
      });
    });

    context('with blank last name', () => {
      set('lastName', () => null);

      it('should return only the first name', () => {
        expect(user.name).toEqual('Harry');
      });
    });
  });
});