This module provides tap API with Mocha-like DLS as Given-When-Then style for BDD tests.
This module requires Node >= 4.
npm install tap-given
Feature: TDD in Given-When-Then style
Scenario: Basic scenario
Given examples/test.js
file:
const t = require('tap')
require('tap-given')(t)
require('chai').should()
Feature('TDD in Given-When-Then style for TAP', () => {
Scenario('Basic scenario', () => {
let a, b, c
Given('first value', () => {
a = 2
})
And('second value', () => {
b = 21
})
When('I do multiplication operation', () => {
c = a * b
})
Then('the result is correct', () => {
c.should.equal(42)
})
})
})
When I run tap
command:
$ tap -R spec examples/test.js
Then following output is produced:
examples/test.js
Feature: TDD in Given-When-Then style for TAP
Scenario: Basic scenario
✓ Given first value
✓ And second value
✓ When I do multiplication operation
✓ Then the result is correct
4 passing (233.031ms)
Feature
function is an alias to describe
function and might be optional.
Scenario
function is an alias to context
function. It usually provides a
context for its steps then real function () {}
might be used instead arrow
() => {}
notation.
Given
, When
, Then
and And
functions are aliases to it
function.
Before
, beforeEach
, After
and afterEach
functions are also provided
and are optional.
For Before
and After
functions the first argument is optional.
All functions except BeforeEach
and AfterEach
add some prefix to the
description of the step.
Use following syntax instead require
:
import * as tap from 'tap'
import { tapGiven } from 'tap-given'
tapGiven(tap)
Install eslint-plugin-tap-given
module and use in package.json
:
{
"standard": {
"plugins": [ "tap-given" ],
"env": [ "tap-given/tap-given" ]
}
}
or:
{
"eslintConfig": {
"plugins": [ "tap-given" ],
"env": {
"tap-given/tap-given": true
}
}
}
Without plugin:
{
"standard": {
"globals": [
"After",
"AfterEach",
"And",
"Before",
"BeforeEach",
"Feature",
"Given",
"Scenario",
"Then",
"When"
]
}
}
or:
/* global Feature, Scenario, Given, When, Then, And, Before, BeforeEach, After, AfterEach */
Copyright (c) 2017 Piotr Roszatycki piotr.roszatycki@gmail.com