mocha-data-driven

1.0.1 • Public • Published

mocha-data-driven

This is a project forked from data-driven.

mocha-data-driven is an extension to the mocha JavaScript testing framework that (as the name implies) data driven testing.

mocha-data-driven allows tests to be wrapped in a block that will run each test within that block for every item in the given data set.

Specifying test data

Test data is simply specified as an array of objects. The objects can contain any data you like that is relevant to your particular tests.

The test functions within that block work exactly as they do with regular mocha, with the exception that they get passed an additional first parameter with the particular test data to execute the test with.

Describing tests

Test descriptions can have placeholders wrapped in {}. Any placeholders that match items in the test object will be replaced with the value for that test run e.g. if your test data looked like [{name: 'bob'},{name: 'alice'}], and you had a description like it('should work with a person called {name}', ..., then you would end up with a test named should work with a person called bob, and another test named should work with a person called alice when the tests are actually executed.

Example

var data_driven = require('mocha-data-driven')
 
describe('Array', function() {
  describe('#indexOf()', function(){
        data_driven([{value: 0},{value: 5},{value: -2}], function() {
         it('should return -1 when the value is not present when searching for {value}', function(ctx){
           assert.equal(-1, [1,2,3].indexOf(ctx.value));
         })
        })
   })
})
 

You aren't limited to single tests within the data_driven block. You can have as many as you like, and can also have a mixture of tests inside and outside of the data_driven block within a single test case, and can also have multiple data_driven blocks within your code too.

Asynchronous tests

Asynchronous testing can also be performed as with regular mocha

 
describe('some async function', function() {
    data_driven([{name: 'negative', data: -1, expected: -10},{name: 'positive', data: 1, expected: 10}], function() {
        it('should do something ascynchronous with {name} numbers', function(ctx,done) {
            some_async_call(ctx.data, function(result) {
                assert.equal(ctx.expected, result)
                done()
            })
        })
    }) 
})
 

Installation

To start using mocha-data-driven, simply add a dependency to mocha-data-driven 1.0.1 to your package.json, and run npm install.

Package Sidebar

Install

npm i mocha-data-driven

Weekly Downloads

114

Version

1.0.1

License

none

Last publish

Collaborators

  • skawaguchi