Nincompoops Producing Methane

    teststate
    TypeScript icon, indicating that this package has built-in type declarations

    0.0.3 • Public • Published

    teststate

    Create immutable test state reinitialized after each test case with type inference.

    Install

    Using npm

    npm install teststate
    

    Using yarn

    yarn add --dev teststate
    

    How to use this library?

    // (1) import testState method from teststate module.
    import { testState } from "teststate";
    
    const EXPECTED_VALUE = "...";
    
    describe("test fooMethod", () =>
      // (2) Declare state, pass a callback that builds state to be recreated between each tests.
      const state = testState(() => {
        const foo = fooFactory();
        return { foo };
      }, beforeEach);
    
      it("returns bar", () => {
        // (3) Use state inside test methods.
        const result = fooMethod(state.foo);
    
        expect(result).toBe(EXPECTED_VALUE);
      });
    });

    Why should I use this library?

    Normally, when you define some state in beforeEach hook, you do:

    describe("tests", () => {
      let foo: null | SomeType = null;
    
      beforeEach(() => {
        foo = createSomeTypeInstance();
      });
    
      it("passes the test", () => {
        // here foo can be SomeType | null
      });
    });
    describe("tests", () => {
      const state = testState(() => {
        return {
          foo: createSomeTypeInstance(),
        };
      }, beforeEach);
    
      it("passes the test", () => {
        // here state.foo must be SomeType
      });
    });

    With teststate, foo is always of type SomeType and can be accessed via state.foo.

    Install

    npm i teststate

    DownloadsWeekly Downloads

    38

    Version

    0.0.3

    License

    MIT

    Unpacked Size

    10.7 kB

    Total Files

    11

    Last publish

    Collaborators

    • piotrszyma