npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

jest-mock-primitive

v1.0.1

Published

mock primitives/non-functions with Jest

Downloads

9

Readme

jest-mock-primitive

Build Status

Ever tried to mock a primitive? You can create a mock within your test file...

jest.mock('./config', () => ({ name: 'Bingo' }))

...but that only works once. If you need to test variations of that, you need to make a new test file for each version.

Unless you use jest-mock-primitive. 😎

Usage

To mock primitives on a file called config.js, add a manual mock. Then export the module after passing it through primitive-mock.

// __mocks__/config.js
import mock from 'jest-mock-primitive'
import path from 'path'

// Use module.exports and provide the absolute path.
module.exports = mock(path.resolve(__dirname, '../config'))

Now you can mock primitives just like you mock functions. Each primitive is on the mocked module with the original value, but they also have "backdoor" mocks. To alter or interrogate the mock for name, use nameMock. For color, use colorMock. For evilBananaSpaceShip, use evilBananaSpaceShipMock.

it('should allow me to force feed values for a primitive', () => {
  const { nameMock } = require('./config')
  nameMock.mockImplementationOnce(() => 'Bert')
  expect(app.getName()).toBe('Bert')

  nameMock.mockImplementationOnce(() => 'Ernie')
  expect(app.getName()).toBe('Ernie')
})

The rest of the module is mocked via genMockFromModule, so you can use it as usual.

Complete Example

example

Caveats

Due to the way the import * as style of imports breaks references, this does not work without a minor tweak.

For any non-functions you want to mock, the call sites must reference the default export as shown here.

import * as config from './config'

// can't mock
// export const getName = () => config.name

// can mock
export const getName = () => config.default.name

kickstarted by npm-boom