Skip to content

A extremely simple approach to making lab testing suites

Notifications You must be signed in to change notification settings

jmac105/lab-suite

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lab-suite

Build Status

lab-suite is a simple tool to create reusable test suites. It's quite easy to get into a pattern of cutting and pasting existing tests and then manually replacing the things that have changed but this can be time consuming and create a real maintenance nightmare.

While it was created to work with lab it does not directly depend on it. In theory any testing framework can be used.

Installation

npm install lab-suite -D

Create a suite

To create a suite follow the example below.

You can also set the expectations for usage of the suite to make it easier for someone to implement. These expectations will be checked when the suite is run.

import labSuite from "lab-suite";

const suite = labSuite.create();

suite.expect("SERVICE").to.be.a.function();
suite.expect("SERVICE_CALL").to.be.a.string();
suite.expect("SERVICE_INPUT").to.be.an.array();
suite.expect("SERVICE_RESULT").to.be.a.string();

suite.declare((lab, variables) => {

  const {
    SERVICE,
    SERVICE_CALL,
    SERVICE_INPUT,
    SERVICE_RESULT
  } = variables;

  lab.experiment(`The ${SERVICE_CALL} method`, () => {

    lab.test("succeeds when get called with good parameters", done => {

      const service = new SERVICE();

      return service[SERVICE_CALL](...SERVICE_INPUT)
        .then(result => {
          expect(result).to.equal(SERVICE_RESULT);
        });
    });
  });
});

export default suite;

Run a suite

Import the suite into you test file and do away with boilerplate tests. You can still create normal too if the thing you are testing isn't generic.

import serviceTestSuite from "./serviceTestSuite";
import ServiceA from "./ServiceA";
import ServiceB from "./ServiceB";

const variablesA = {
  SERVICE: ServiceA, 
  SERVICE_CALL: "addNumbers", 
  SERVICE_INPUT: [1,2], 
  SERVICE_RESULT: 3 
  };

const variablesB = {
  SERVICE: ServiceB, 
  SERVICE_CALL: "countCharacters", 
  SERVICE_INPUT: ["abc","def", "ghi"], 
  SERVICE_RESULT: 9 
  };

serviceTestSuite.run(lab, variablesA);
serviceTestSuite.run(lab, variablesB);

About

A extremely simple approach to making lab testing suites

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%