Skip to content

JeremiePr/PlumeTesting

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PlumeTesting

Table of contents

General info

PlumeTesting is a very light testing library. The purpose is to run test a very minimal way.

Technologies

  • Node.js
  • Typescript

Setup

npm install @jeje-devs/plume-testing

Usage

Simply run

import { runTests, theArray, theNumber, theBoolean } from '@jeje-devs/plume-testing';

runTests<void>({

    'ArrayShould': () =>
    {
        theArray(['foo', 'bar', 'baz']).shouldHaveLength(3);
        theArray([{ name: 'Foo' }, { name: 'Bar' }, { name: 'Baz' }])
            .shouldVerify(array => array.length === 3 && array[1].name === 'Bar');
    },

    'NumberShould': () =>
    {
        theNumber(15.15).shouldBe(15.15);
        theNumber(9.81).shouldNotBe(10);
    },

    'BooleanShould': () =>
    {
        // This test will fail
        theBoolean(false).shouldBeTrue();
    }

    // All remaining tests

});

This method will log the test results:

==================================================

Tests succeeded: 2
Tests failed: 1

TESTS FAILED:

BooleanShould:   Assert failed. Actual boolean 'false' should be 'true'

TESTS SUCCEEDED:

ArrayShould
NumberShould

==================================================

You can also run tests asynchronously:

runTests<void>({

    'SomethingShould': async () =>
    {
        const actual = await giveMeANumberAsynchronously();

        theObject(actual).shouldNotBeNil();
        theNumber(actual).shouldBe(123);
    }

});

If you don't want to display the results but storing them to a variable, just use the method getTestsResults:

import { getTestsResults, theObject } from '@jeje-devs/plume-testing';

const results = await getTestsResults<void>({

    'SomeTest': () =>
    {
        theObject(null).shouldBeNil();
    }

});

The different testing methods are:

  • assert
  • theObject
  • theArray
  • theDate
  • theString
  • theNumber
  • theBoolean

Tests lifecycle

You can also pass 2 optional methods for the tests:

  • initialize: If you need something to run before the tests and also store variables during the whole testing lifecycle, you can use this method
  • terminate: If you need to call stuff after the tests have run, you can call this method

Example:

interface TestParams
{
    message: string;
}

function initialize(): TestParams
{
    // Tests initialization
    return { message: 'Hello World!' };
}

function terminate(params: TestParams): void
{
    // Tests termination
}

runTests<TestParams>({

    // We can also access the parameters inside test methods
    'SomethingShould': async params =>
    {
        const actual = await giveMeANumberAsynchronously();

        theObject(actual).shouldNotBeNil();
        theNumber(actual).shouldBe(123);
    }

}, initialize, terminate);

Contributors

Links

About

Very very lightweight testing Node.js library

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published