Given-when-then syntax reference
Verifier is based on JsTestDriver and includes an extended version of the Jasmine BDD framework. The reference list below highlights the main feature syntax of Jasmine and our extensions of the framework.
Test Related Syntax
given
As in "Given a system is in an initial state".
given("tile.opened = true");
when
As in "When a system state change is made".
when("tile.buyButton.clicked => true");
then
As in "Then a system will be in a new state".
then("tile.opened = false");
continuesFrom
A test can continue from another test. This allows a set of previous state changes to be included in the current test without having to include them all as individual lines in the current test. This allows efficient re-use of previous test cases. However, beware that this doesn’t lead to unnecessary chaining of tests, as this can make them difficult to read and debug.
given("test.continuesFrom = 'tile trade test'");
it
As in "(test that) it". Each test within a suite begins with it.
it("is in the initial state when the tile is opened", function(){
xit
As in "exclude test". Use this to exclude an individual test, but note that we can still continue from the test, and be informed of the excluded test in the test results.
xit("is in the initial state when the tile is opened", function(){
=
This is used in given
and then
statements to check that values have been set correctly. N.B. You must leave a space on each side of the = sign or the test will fail.
then("tile.state = 'opened'");
=>
This syntax is used in when
statements, to set a value.
when("tile.state => 'opened'");
and
Indicates that more than one clause needs to be checked for this part of the test.
given("tile.opened = true"); and("tile.tradeState = initial");
Or
then("tile.opened=false"); and("tile.tradeState = 'final'");
Suite Related Syntax
describe
Each test suite has a describe which indicates the name of the test suite.
describe("tile trade test" , function() {
xdescribe
To exclude an entire suite of tests from the test run.
xdescribe("tile trade test" , function() {
fixtures
Used to include any fixtures required by the test suite.
fixtures("ViewFixtureTestsFixtureFactory");
Or
fixtures("caplin.component.testing.TreeComponentFixtureFactory");
beforeEach
An optional function to run some setup tasks before each test suite is run. This could call another function to perform the setup tasks.
beforeEach(function() { setupPage() });
Or, if there are only one or two setup tasks these can be placed within this function.
beforeEach(function () { caplin.testing.Utils.loadCSSAndAttachToPage(["/test/resources/unbundled-style/reset.css", "/test/bundles/css/common_css.bundle"]); caplin.testing.Utils.captureSetIntervalAndSetTimeout(); });
afterEach
An optional function to run some teardown tasks after each test suite is run. This could call another function to perform the setup tasks.
afterEach(function() { tearDownPage(); });
Or, if there are only one or two setup tasks these can be placed within this function.
afterEach(function () { caplin.testing.Utils.removeLoadedAndAttachedCSSFromPage(); caplin.testing.Utils.getCapturedFunctionsAndReleaseSetIntervalAndSetTimeout(); });