2.1.0 • Published 7 years ago

jest-context v2.1.0

Weekly downloads
464
License
MIT
Repository
github
Last release
7 years ago

jest-context

npm npm npm CircleCI branch

Adds context as an alternative to describe for jest.

Getting Started

Install jest-context using yarn:

yarn add --dev jest-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-context at the top of every test:

import context from 'jest-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-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');
      });
    });
  });
});