Code Monkey home page Code Monkey logo

jest-setup-mock's Introduction

jest-setup-mock

Return / resolve values while simultaneously testing expected arguments. Full TypeScript type safety.

Rationale

Have you ever wanted to setup a Jest mock to return a value only when it received the correct arguments?

Sure, you could access mockVariable.mock.calls and assert its contents besides your original assert, but to my taste that is a pretty low-level API that furthermore makes your test code bloated and noisy.

With jest-setup-mock, you can set up the mock to return / resolve a value only when the arguments match the expected arguments that you specify:

let someFunction: (x: number, y: string) => Promise<boolean>;
let functionMock: FunctionMock<typeof someFunction>;

setupMock(someFunction)
    .expectArguments(42, 'is the answer')
    .resolveValueOnce(true);

The code above will result in the mock resolving true whenever it is called with two arguments matching [42, 'is the answer'], and throwing a descriptive error otherwise.

Furthermore, by typing your mock variable as FunctionMock<ActualFunctionType>, the types of arguments and return values in the above fluent syntax will be inferred correctly, guarding you from type mistakes.

For reference, lodash's isEqual method is used to check for expected / actual argument equality, so deep object / array equality comparison will work.

Contributing

Pull requests are accepted.

jest-setup-mock's People

Contributors

wh1t3cat1k avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.