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

@vamship/test-utils

v3.1.1

Published

Utility library that provides useful functionality for writing tests

Downloads

27

Readme

@vamship/test-lib

Utility library that provides useful functionality for writing tests

This library exports a collection of classes and modules that makes writing tests easier. While not specific to any given testing library or framework, this library has been developed with mocha and chai in mind.

API Documentation

API documentation can be found here.

Motivation

Testing is an important part of application development, and as well tested applications and libraries grow in size, so do the automated tests that go with them. Over time, common test patterns emerge, and one finds oneself rewriting the same scaffolding or utility classes to execute these test patterns.

The idea behind this library is to encapsulate these testing patterns, or at least the building blocks for these patterns into a single library that can be imported and reused in other projects.

For example, the testValues module exports a collection of functions that can be used to generate dummy values for testing. The ObjectMock class provides a simple way to mock out methods on objects allowing unit tests to be executed while having mocks replace dependencies for the entities under test. The SuperSpyBuilder class can be used to apply spy methods on inherited methods, including the super() constructor call. This enables the creation of tests that treat parent classes as black boxes.

Installation

This library can be installed using npm:

npm install @vamship/test-utils

Usage

The classes and modules exported by this library are independent, and can be used by importing them into the source code as follows:

const _rewire = require('rewire');
const _testValues = require('@vamship/test-utils').testValues;
const {ArgError} = require('@vamship/arg-utils').args;
...

let User = require('../../src/user');

describe('MyClass', () => {
    beforeEach(() => {
        // Load up the object under test. Use rewire to load the object
        // so that mocks can be assigned if necessary.
        User = _rewire('../../src/user');
    });

    it('should throw an error if invoked without a valid username', () => {
        const error = 'Invalid username specified (arg #1)';

        // Create an array of test values containing all types except a string,
        // and then add an empty string to that list
        const inputs = _testValues.allButString('');

        inputs.forEach((username) => {
            const wrapper = () => {
                return new User(username);
            };

            expect(wrapper).to.throw(ArgError, error);
        });
    });
});

The example above is just one of many possible examples of how this library and its exported modules and classes may be used. For more information, please review the API documentation.