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

 

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

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
});

 

 

Availability

Requires:

Contents

Jump to:

Test API

Topics: