Socket
Socket
Sign inDemoInstall

jest-mock

Package Overview
Dependencies
6
Maintainers
6
Versions
236
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    jest-mock

## API


Version published
Weekly downloads
29M
decreased by-3.01%
Maintainers
6
Install size
257 kB
Created
Weekly downloads
 

Package description

What is jest-mock?

The jest-mock package is a module for mocking classes and objects in JavaScript tests. It is part of the Jest testing framework but can be used independently. It allows developers to create mock functions, spy on function calls, and set return values or implementations for testing purposes.

What are jest-mock's main functionalities?

Creating Mock Functions

This feature allows you to create a mock function that can track calls, arguments, and return values. It can be used to test how a function is used without actually executing its logic.

const mockFn = jest.fn();

Mocking Return Values

With this feature, you can set a default return value for a mock function. This is useful when you want to test the behavior of code that depends on the return value of the function being mocked.

const mockFn = jest.fn().mockReturnValue('default value');

Mocking Modules

This feature allows you to mock entire modules, which is particularly useful when you want to isolate the module being tested from its dependencies.

jest.mock('moduleName', () => { return jest.fn(() => 'mocked module') });

Spying on Methods

Spying on methods enables you to observe and track calls to object methods without affecting their actual implementation. This is useful for verifying that methods are called with the correct arguments.

const spy = jest.spyOn(object, 'methodName');

Other packages similar to jest-mock

Changelog

Source

24.9.0

Features

  • [expect] Highlight substring differences when matcher fails, part 1 (#8448)
  • [expect] Highlight substring differences when matcher fails, part 2 (#8528)
  • [expect] Improve report when mock-spy matcher fails, part 1 (#8640)
  • [expect] Improve report when mock-spy matcher fails, part 2 (#8649)
  • [expect] Improve report when mock-spy matcher fails, part 3 (#8697)
  • [expect] Improve report when mock-spy matcher fails, part 4 (#8710)
  • [expect] Throw matcher error when received cannot be jasmine spy (#8747)
  • [expect] Improve report when negative CalledWith assertion fails (#8755)
  • [expect] Improve report when positive CalledWith assertion fails (#8771)
  • [expect] Display equal values for ReturnedWith similar to CalledWith (#8791)
  • [expect, jest-snapshot] Change color from green for some args in matcher hints (#8812)
  • [jest-snapshot] Highlight substring differences when matcher fails, part 3 (#8569)
  • [jest-core] Improve report when snapshots are obsolete (#8665)
  • [jest-cli] Improve chai support (with detailed output, to match jest exceptions) (#8454)
  • [*] Manage the global timeout with --testTimeout command line argument. (#8456)
  • [pretty-format] Render custom displayName of memoized components (#8546)
  • [jest-validate] Allow maxWorkers as part of the jest.config.js (#8565)
  • [jest-runtime] Allow passing configuration objects to transformers (#7288)
  • [@jest/core, @jest/test-sequencer] Support async sort in custom testSequencer (#8642)
  • [jest-runtime, @jest/fake-timers] Add jest.advanceTimersToNextTimer (#8713)
  • [@jest-transform] Extract transforming require logic within jest-core into @jest-transform (#8756)
  • [jest-matcher-utils] Add color options to matcherHint (#8795)
  • [jest-circus/jest-jasmine2] Give clearer output for Node assert errors (#8792)
  • [jest-runner] Export all types in the type signature of jest-runner (#8825)

Fixes

  • [jest-cli] Detect side-effect only imports when running --onlyChanged or --changedSince (#8670)
  • [jest-cli] Allow --maxWorkers to work with % input again (#8565)
  • [babel-plugin-jest-hoist] Expand list of whitelisted globals in global mocks (#8429)
  • [jest-core] Make watch plugin initialization errors look nice (#8422)
  • [jest-snapshot] Prevent inline snapshots from drifting when inline snapshots are updated (#8492)
  • [jest-haste-map] Don't throw on missing mapper in Node crawler (#8558)
  • [jest-core] Fix incorrect passWithNoTests warning (#8595)
  • [jest-snapshots] Fix test retries that contain snapshots (#8629)
  • [jest-mock] Fix incorrect assignments when restoring mocks in instances where they originally didn't exist (#8631)
  • [expect] Fix stack overflow when matching objects with circular references (#8687)
  • [jest-haste-map] Workaround a node >=12.5.0 bug that causes the process not to exit after tests have completed and cancerous memory growth (#8787)

Chore & Maintenance

  • [docs] Replace FlowType with TypeScript in CONTRIBUTING.MD code conventions
  • [jest-leak-detector] remove code repeat (#8438)
  • [docs] Add example to jest.requireActual (#8482)
  • [docs] Add example to jest.mock for mocking ES6 modules with the factory parameter (#8550)
  • [docs] Add information about using jest.doMock with ES6 imports (#8573)
  • [docs] Fix variable name in custom-matcher-api code example (#8582)
  • [docs] Fix example used in custom environment docs (#8617)
  • [docs] Updated react tutorial to refer to new package of react-testing-library (@testing-library/react) (#8753)
  • [docs] Updated imports of react-testing-library to @testing-library/react in website (#8757)
  • [jest-core] Add getVersion (moved from jest-cli) (#8706)
  • [docs] Fix MockFunctions example that was using toContain instead of toContainEqual (#8765)
  • [*] Make sure copyright header comment includes license (#8783)
  • [*] Check copyright and license as one joined substring (#8815)
  • [docs] Fix WatchPlugins jestHooks.shouldRunTestSuite example that receives an object (#8784)
  • [*] Enforce LF line endings (#8809)
  • [pretty-format] Delete obsolete link and simplify structure in README (#8824)
  • [docs] Fix broken transform link on webpack page (#9155)

Performance

  • [jest-watcher] Minor optimization for JestHook (#8746)
  • [@jest/reporters] Prevent runaway CPU usage with --notify on macOS (#8831)

Readme

Source

jest-mock

API

constructor(global)

Creates a new module mocker that generates mocks as if they were created in an environment with the given global object.

generateFromMetadata(metadata)

Generates a mock based on the given metadata (Metadata for the mock in the schema returned by the getMetadata method of this module). Mocks treat functions specially, and all mock functions have additional members, described in the documentation for fn in this module.

One important note: function prototypes are handled specially by this mocking framework. For functions with prototypes, when called as a constructor, the mock will install mocked function members on the instance. This allows different instances of the same constructor to have different values for its mocks member and its return values.

getMetadata(component)

Inspects the argument and returns its schema in the following recursive format:

{
  type: ...
  members: {}
}

Where type is one of array, object, function, or ref, and members is an optional dictionary where the keys are member names and the values are metadata objects. Function prototypes are defined simply by defining metadata for the member.prototype of the function. The type of a function prototype should always be object. For instance, a simple class might be defined like this:

const classDef = {
  type: 'function',
  members: {
    staticMethod: {type: 'function'},
    prototype: {
      type: 'object',
      members: {
        instanceMethod: {type: 'function'},
      },
    },
  },
};

Metadata may also contain references to other objects defined within the same metadata object. The metadata for the referent must be marked with refID key and an arbitrary value. The referrer must be marked with a ref key that has the same value as object with refID that it refers to. For instance, this metadata blob:

const refID = {
  type: 'object',
  refID: 1,
  members: {
    self: {ref: 1},
  },
};

defines an object with a slot named self that refers back to the object.

fn

Generates a stand-alone function with members that help drive unit tests or confirm expectations. Specifically, functions returned by this method have the following members:

.mock

An object with three members, calls, instances and invocationCallOrder, which are all lists. The items in the calls list are the arguments with which the function was called. The "instances" list stores the value of 'this' for each call to the function. This is useful for retrieving instances from a constructor. The invocationCallOrder lists the order in which the mock was called in relation to all mock calls, starting at 1.

.mockReturnValueOnce(value)

Pushes the given value onto a FIFO queue of return values for the function.

.mockReturnValue(value)

Sets the default return value for the function.

.mockImplementationOnce(function)

Pushes the given mock implementation onto a FIFO queue of mock implementations for the function.

.mockImplementation(function)

Sets the default mock implementation for the function.

.mockReturnThis()

Syntactic sugar for .mockImplementation(function() {return this;})

In case both mockImplementationOnce()/mockImplementation() and mockReturnValueOnce()/mockReturnValue() are called. The priority of which to use is based on what is the last call:

  • if the last call is mockReturnValueOnce() or mockReturnValue(), use the specific return value or default return value. If specific return values are used up or no default return value is set, fall back to try mockImplementation();
  • if the last call is mockImplementationOnce() or mockImplementation(), run the specific implementation and return the result or run default implementation and return the result.

FAQs

Last updated on 16 Aug 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc