testrun

0.7.1 • Public • Published

testrun Build Status Build Status

A module to support a test.

NPM

Install

Install with npm

$ npm install testrun --save-dev

Usage

1. Create test cases.

(sample.js)
const testrun = require('testrun').mocha;
 
function testfn(testcase) {  // `testcase` is a property of the 3rd argument of `testrun`
  if (typeof testcase.in === 'string') {
    return testcase.in;
  } else {
    throw new TypeError();
  }
}
 
testrun('test name', testfn, [
  {
    name: 'test case group',
    cases: [  // `cases` is the keyword for specifying test case group.
      {
        name: 'test for input : ${testcase.in} => ${testcase.expected}',
        in: 'aaa',
        expected: 'aaa',   // `expected` is the keyword for specifying expected value.
      },
      {
        name: 'test for in:${testcase.in} => ${testcase.error}',
        in: ['a', 'b', 'c'],
        error: TypeError,  // `error` is the keyword for specifying expected error.
      },
      {
        name: 'sub test case group',
        cases: [ ... ],
      },
      {
        name: 'skip this test case',
        skip: true,        // `skip` is the keyword to skip a test case or a test case group.
        ...
      },
      /*
      {
        name: 'only run this test case',
        only: true,        // 'only' is the keyword to run only a test case or a test case group.
        ...
      },
      */
    ],
  },
]);

2. Run the test cases.

$ mocha sample.js

   test case group
     ✓ test for in: 'aaa' => 'aaa'
     ✓ test for in:[ 'a', 'b', 'c' ] => TypeError

   0 passing (16ms)

Supporting test frameworks

  • mocha

    const testrun = require('testrun').mocha;
  • lab

    const testrun = require('testrun').lab(exports);

    NOTICE: If using lab on node version 0.10 or 0.12, you have to use lab version 6.2.

APIs

testrun(testname, testfn, testcases) => void

runs the specified test function for each test cases.

Parameters:
  • testname [string] : a test name.

  • testfn [function] : a test function. (see below.)

  • testcases [array] : an array of test cases.

    #### testfn (testcase [, done]) => any

    is a function to execute a testcase. The argument testcase is each property in testcases passed to testrun function.

    ##### Parameters:

    • testcase [object] : a test case object.
    • done [function] : a callback to end.
      • If this argument is not specified, testfn is required to return a result or to throw an error.
      • If this argument is specified, testfn is required to evaluate a testcase in own way and execute this argument to end it.

    #### testcase

    ##### Reserved words for properties of testcase:

    • expected [any] : set an expected value of a test case.
    • error [Error] : set an error type which a test case throws
    • cases [array] : set a test case group.
    • skip [boolean] : set true if you want to skip a test case or a test case group.
    • only [boolean] : set true if you want to run only a test case or a test case group.

testrun.byPlatform(valuesByPlatforms) => any

returns a value for the current platform.

Parameters:
  • valuesByPlatforms [plain-object | any] : values by platforms.
Example:
testrun.byPlatform({win32: 123, otherwise: 999 });
// => 123  (on Windows)
// => 999  (on other platform)
 
testrun.byPlatform('abc');
// => 'abc'

testrun.scriptrun(templateFile, testDir) => function

returns a function which executes javascript based on content of templateFile on child process.

Parameters:
  • templateFile [string] : a path string of a javascript template file for a test case.
  • testDir [string] : a path string of a directory to output a javascript file for a test case.
Example:
(template.js)
const assert = require('assert');
var testcase = ${testcase};
assert.strictEqual(testcase.input.toUpperCase(), testcase.expected);
const testfn = testrun.scriptrun(templateFile, testDir);
 
testrun('convert letter case', testfn, [
  { name: 'convert ${testcase.input} => ${testcase.expected}', input: 'abc', expected: 'ABC' },
  ...
]);

License

Copyright (C) 2016 Takayuki Sato

This program is free software under MIT License. See the file LICENSE in this distribution for more details.

Dependencies (2)

Dev Dependencies (4)

Package Sidebar

Install

npm i testrun

Weekly Downloads

0

Version

0.7.1

License

MIT

Last publish

Collaborators

  • sttk