This AI is still in early stages of development.
Test.EXPECT( )
- Aubergine
Syntax
Test("Basic syntax", Test.EXPECT( numResults ), function() { // The test will fail if it does not produce exactly numResults results });
Parameters
Parameter | Type | Mandatory | Notes | API Version |
---|---|---|---|---|
numResults | Number | A non-negative integer stating how many results the test must produce. If the test does not provide the specified number of results, it will fail regardless of any other criteria. | 1.0 |
Return values
Value | Type | Notes | API Version |
---|---|---|---|
<mode> | Object | The mode object is associated with the unit test defined in the same Test() invocation. | 1.0 |
<error> | Error | An error will be thrown if numResults is missing or invalid, preventing the test from being run. | 1.0 |
Effect on test
The test is treated as synchronous and its pass/fail state will be determined as soon as the Unit Tests has been processed...
Fail conditions
The unit test will be deemed to have failed if any of the following occur:
- The test does not generate exactly numResults results
- One or more Test Assertions fail
- An uncaught exception is thrown
- An ABORT( ) or REQUIRE( ) signal is thrown
Pass conditions
If the test has not failed, it will be deemed to have passed.
Examples
The following test will fail. because it will generate no results. Why? Because the variable scope of Unit Tests functions is altered during testing and the "thingsToCheck" variable will not be available. However, the Test.EXPECT( ) mode function is run immediately, while it still has access to "thingsToCheck" and thus indicate that the test expects 3 results...
var thingsToCheck = ["chat", "include", "playerData"]; Test("Check things", Test.EXPECT( thingsToCheck.length ), function() { // in here, thingsToCheck == undefined! if (thingsToCheck && thingsToCheck.length) { thingsToCheck.forEach(function(thing) { hasNative( thing, thing+" is native?" ); }); } });
Having been informed of the issue with the number of results, you'd then go in and fix the test by passing in "thingsToCheck" as the test settings (4rd parameter on Test(), and remember to define the parameter in the Unit Tests function)...
var thingsToCheck = ["chat", "include", "playerData"]; Test("Check things", Test.EXPECT( thingsToCheck.length ), function(thingsToCheck) { // in here, thingsToCheck == undefined! if (thingsToCheck && thingsToCheck.length) { thingsToCheck.forEach(function(thing) { hasNative( thing, thing+" is native?" ); }); } }, thingsToCheck);
Another example could be...
Test("Test namespace properties", Test.EXPECT( 4 ), function() { // get list of property names on Test namespace var keys = Object.getOwnPropertyNames(_global.Test); // expecting just the 4 mode functions: ANY, EXPECT, ASYNCH, APPEND? // this test will fail because there's at least a 5th: "Module" keys.forEach(function(key) { ok( true, key ); // add property name to results }); // so at least 5 results are generated = test fails });
Contents
Jump to:
Test API
Topics:
- Test() — Define a unit test and it's configuration...
- Test Modules — A test module groups one or more unit tests and provides additional lifecycle settings for those tests...
- Test.module() — Allows multiple tests to be grouped together in to modules...
- Module Lifecycle Object — Configure the lifecycle of tests in the module...
- Test Modes — Defines the mode in which a unit test is run...
- Test.ANY( ) — The most basic unit test mode...
- Test.EXPECT( ) — Causes the test to fail if it does not generate the specified number of results...
- Test.ASYNCH( ) — Causes a test to keep running until it either passes, fails or times-out...
- Test.APPEND( ) — Appends results to a specific asynchronous test session...
- Unit Tests — The unit test function, responsible for performing one or more Test Assertions...
- Test Assertions — Assertions are used to perform various tests and annotations within a unit test...
- comment( ) — Adds a comment to the test results...
- ok( ) — A simple state checking assertion...
- hasNative( ) — Assert presence of a native property on the global object...
- hasFunction( ) — Check if a context has a function property, optionally with specified number of formal parameters...
- equal( ) — A basic equality checking assertion...
- notEqual( ) — A basic inequality checking assertion...
- strictEqual( ) — A strict equality checking assertion...
- notStrictEqual( ) — A strict inequality checking assertion...
- deepEqual( ) — A deep equality checking assertion...
- notDeepEqual( ) — A deep inequality checking assertion...
- similarTo( ) — A deep similarity checking assertion...
- notSimilarTo( ) — A deep dissimilarity spotting assertion...
- Test Signals — Signals are used to prematurely terminate Unit Tests...
- REQUIRE( ) — Check whether a test or group of tests have passed. If the requirement fails, a RequireSignal will be sent which terminates the current test and marks it as failed.
- ABORT( ) — Aborts the current test, marking it as failed in the process...
- FINISH( ) — Terminates the test as if it had finished normally...
- Test Events — Events defined by Test API...
- Test Results — After testing is finished, output results...
- Test API - Dev Notes — Developer notes for this API...
- Test API - possible future direction — Rough ideas for future development...