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

mockexpect

v0.1.1

Published

Mocking framework for nodejs with strict expectations

Downloads

8

Readme

MockExpect

Build Status

Mocking Libray with Strict Expectations for NodeJS

MockExpect allows you to set strict expectations on your test dependencies. What this means is that you can assert that your dependencies will not have any unexpected behavior in your production code.

You can create mocks in 2 different ways with MockExpect. You can simply spy on a function, as most mocking libraries allow you to do, or you can spy on a constructor function (one that is meant to be invoked with new). When you spy on a constructor function, all of the functions defined on the object's prototype will be spied on. This helps to ensure you adhere to the contract of the "type" of your dependencies without having to build out fake objects in test code that match your dependencies.

Examples

Include the module

var mockexpect = require('mockexpect');

Set Expectations

var DummyObject = function () {};
DummyObject.prototype.testFunction = function () {};

var mockDummyObject = mockexpect.mock(DummyObject);

mockDummyObject.testFunction.expect.toHaveBeenCalled();

mockDummyObject.testFunction();

mockDummyObject.assertExpectations();

If you were to invoke testFunction() in your code without setting an expectation, your tests would fail for not having an expectation set. toHaveBeenCalled() also takes an optional call count parameter, so you can expect an exact number of calls (the default is 1).

mockDummyObject.testFunction.expect.toHaveBeenCalled(3);

Expectations with Arguments

mockDummyObject.testFunction.expect.toHaveBeenCalledWith('a', 3);

Expectations with Matchers

mockDummyObject.testFunction.expect.toHaveBeenCalledWith(new mockexpect.Matcher(Function));

mockDummyObject.testFunction(function() {});

Invoking functions from mocked functions

mockDummyObject.testFunction.expect.toHaveBeenCalled().andCall(function () {});

Return value from mocked functions

mockDummyObject.testFunction.expect.toHaveBeenCalled().andReturn('some value');

Mock an individual function

DummyObject.someFunction = function () {};

mockexpect.spyOn(DummyObject, 'someFunction');
DummyObject.someFunction.expect.toHaveBeenCalled();

Emit Events

If an object that is being mocked is an instance of the nodejs EventEmitter, then the EventEmitter functions will NOT be mocked out. This is intentionally done to facilitate easier testing of event listening and dispatching.

DummyObject.prototype = new EventEmitter();

mockDummyObject = mockexpect.mock(DummyObject);

mockDummyObject.emit('someEvent');