vitest-plugin-context

1.0.0 • Public • Published

vitest-plugin-context

npm npm npm

Adds context as an alternative to describe for vitest

Getting Started

Install vitest-plugin-context using yarn:

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

import { context } from 'vitest-plugin-context';

If you want to install context as a global, you can modify the test section of your vitest.config.js to include:

{
    test: {
        setupFiles: [
            "vitest-plugin-context/setup",
        ]
    }
}

Example

Here's an example test that uses context and set:

import { describe, it, expect } from 'vitest';
import { set } from 'vitest-plugin-set';
import { context } from 'vitest-plugin-context';

import User from '../user';

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');
      });
    });
  });
});

Package Sidebar

Install

npm i vitest-plugin-context

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

3.1 kB

Total Files

3

Last publish

Collaborators

  • urkle