This AI is still in early stages of development.
Test Modes
- Aubergine
Overview
When defining a Unit Tests with Test(), a "test mode" is required to define the way in which the test will be processed.
There are currently 4 modes available:
Mode | Notes | API Version |
---|---|---|
Test.ANY() | A basic test test which will pass if none of it's assertions fail and no test-failing Test Signals are triggered. | 1.0 |
Test.EXPECT() | The same as Test.ANY( ) but requires a specific number of results to be logged before allowing a test to pass. | 1.0 |
Test.ASYNCH() | A asynchronous test that can have results added to it by subsequent Test.APPEND( ) tests. The test will remain active until it either fails, passes or times-out. Very useful for testing non-sequential events. | 1.0 |
Test.APPEND() | Appends results to a specific Test.ASYNCH( ) if that test is currently active. | 1.0 |
Synchronous vs. Asynchronous
Each test runs in a test session. Only one session can be running at any given time.
The Test.ANY( ) and Test.EXPECT( ) modes are synchronous – the state of the test will always be determined at the end of the unit test. Essentially, each test with these modes has it's own session in which it is the only test that will run.
The Test.ASYNCH( ) mode, however, can be either synchronous or asynchronous:
- If the test passes or fails, it will act like a Test.ANY( ) or Test.EXPECT( ).
- If the test state has not been determined at the end of the test, an asynchronous session will start, allowing subsequent Test.APPEND( ) mode tests to add more results to the test.
Asynchronous tests are useful for testing events, where there will be a gap between starting the test and the subsequent results being obtained. For more information on asynchronous testing, see Test.ASYNCH( ).
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...