(info) This AI is still in early stages of development.

Test.EXPECT( )

Causes the test to fail if it does not generate the specified number of results...

 

Syntax

Basic syntax
Test("Basic syntax", Test.EXPECT( numResults ), function() {
  // The test will fail if it does not produce exactly numResults results
});

Parameters

ParameterTypeMandatoryNotesAPI Version
numResultsNumber(tick)

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

ValueTypeNotesAPI Version
<mode>ObjectThe mode object is associated with the unit test defined in the same Test() invocation.1.0
<error>ErrorAn 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:

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...

Test will fail if it doesn't generate 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)...

Test will fail if it doesn't generate 3 results...
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...

Have I missed any properties?
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
});

 

 

Availability STABLE

Requires:

Contents

Jump to:

Test API

Topics:

  • Test()Define a unit test and it's configuration...
  • Test ModulesA test module groups one or more unit tests and provides additional lifecycle settings for those tests...
  • Test ModesDefines 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 TestsThe unit test function, responsible for performing one or more Test Assertions...
  • Test AssertionsAssertions 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 SignalsSignals 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 EventsEvents defined by Test API...
  • Test ResultsAfter testing is finished, output results...
  • Test API - Dev NotesDeveloper notes for this API...