diff -r 000000000000 -r 40c8f766c9b8 src/cm/media/js/lib/yui/yui_3.0.0b1/examples/test/test-simple-example.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui_3.0.0b1/examples/test/test-simple-example.html Mon Nov 23 15:14:29 2009 +0100 @@ -0,0 +1,480 @@ + + + + + YUI Library Examples: Test: Simple Testing Example + + + + + + + + + + + + + + +
+
+
+

+ + YUI 3.x Home - + +

+
+ + +
+ + + +
+
+
+
+

YUI Library Examples: Test: Simple Testing Example

+
+
+ +

Note: This is YUI 3.x. Looking for YUI 2.x?

+ +
+
+
+
+ +

Test: Simple Testing Example

+ +
+

+

This example shows basic usage of the YUI Test framework for testing browser-based JavaScript code. + Two different TestCase objects are created and added to a + TestSuite object. The TestRunner + is then used to run the tests once the page has loaded.

+ +
+
+ + + + +
+ + + + +
+
+
+ +

Simple Test Example

+ +

This example begins by creating a namespace:

+ +

This namespace serves as the core object upon which others will be added (to prevent creating global objects).

+ +

Creating the first TestCase

+ +

The first step is to create a new Y.Test.Case object called DataTestCase. + To do so, using the Y.Test.Case constructor and pass in an object literal containing information about the tests to be run:

+ +

The object literal passed into the constructor contains a number of different sections. The first section contains the name property, + which is used to determine which Y.Test.Case is being executed. A name is necessary, so one is generated if it isn't specified.

+

Next, the setUp() and tearDown() methods are included. The setUp() method is used in a Y.Test.Case + to set up data that may be needed for tests to be completed. This method is called immediately before each test is executed. For this example, + setUp() creates a data object. The tearDown() is responsible for undoing what was done in setUp(). It is + run immediately after each test is run and, in this case, deletes the data object that was created by setUp. These methods are optional.

+

The last section contains the actual tests to be run. Test method names must always begin with the word "test" (all lowercase) in order + to differentiate them from other methods that may be added to the object.

+

The first test in this object is testName(), which runs + various assertions on data.name. Inside of this method, a shortcut to Y.Assert is set up and used to run three + assertions: isObject() on data, isString() on data.name and areEqual() to compare + data.name to the expected value, "test". These assertions are arranged in order from least-specific to most-specific, + which is the recommended way to arrange your assertions. Basically, the third assertion is useless to run unless the second has passes and the second + can't possibly pass unless the first passed. Both isObject() and isString() accept a single argument, which is the value + to test (you could optionally include a failure message as a second argument, though this is not required). The areEqual() method + expects two arguments, the first being the expected value ("test") and the second being the actual value (data.name).

+

The second and third tests follow the same pattern as the first with the exception that they work with different data types. The testYear() + method works with data.year, which is a number and so runs tests specifically for numbers (areEqual() can be used with + all data types). The testBeta() method works with data.beta, which is a Boolean, and so it uses the isTrue() + assertion instead of areEqual() (though it could also use areEqual(true, this.data.beta)).

+ +

Creating the second TestCase

+ +

Although it's possible that you'll have only one Y.Test.Case object, typically there is more than one, and so this example includes + a second Y.Test.Case. This one tests some of the built-in functions of the Array object:

+ +

As with the first Y.Test.Case, this one is split up into three sections: the name, the setUp() and tearDown() + methods, and the test methods. The setUp() method in this Y.Test.Case creates an array of data to be used by the various + tests while the tearDown() method destroys the array. The test methods are very simple, testing the pop(), push(), + and splice() methods. Each test method uses areEqual() exclusively, to show the different ways that it can be used. + The testPop() method calls pop() on the array of values, then verifies that the length of the array has changed and + that the value popped off is 4; the testPush() pushes a new value (5) onto the array and then verifies that the length of the array has + changed and that the value is included in the correct location; the testSplice() method tests splice() by removing one + value that's already in the array and inserting two in its place.

+ +

Creating the TestSuite

+

To better organize the two Y.Test.Case objects, a Y.Test.Suite is created and those two Y.Test.Case objects are + added to it:

+ +

The first line creates a new Y.Test.Suite object using its constructor, which accepts a single argument - the name of the suite. As with + the name of a Y.Test.Case, the Y.Test.Suite name is used to determine where execution is when tests are being executed. Although + not required (one is generated if it's not provided), it is recommended that you select a meaningful name to aid in debugging.

+

Any number of Y.Test.Case and Y.Test.Suite objects can be added to a Y.Test.Suite by using the add() + method. In this example, the two Y.Test.Case objects created earlier are added to the Y.Test.Suite.

+ +

Running the tests

+ +

With all of the tests defined, the last step is to run them. This initialization is assigned to take place when all of the YUI + components have been loaded:

+ + + +

Before running the tests, it's necessary to create a Y.Console object to display the results (otherwise the tests would run + but you wouldn't see the results). After that, the Y.Test.Runner is loaded with the Y.Test.Suite object by calling + add() (any number of Y.Test.Case and Y.Test.Suite objects can be added to a Y.Test.Runner, + this example only adds one for simplicity). The very last step is to call run(), which begins executing the tests in its + queue and displays the results in the Y.Console.

+ +
+ +
+
+ + + +
+ +
+

Copyright © 2009 Yahoo! Inc. All rights reserved.

+

Privacy Policy - + Terms of Service - + Copyright Policy - + Job Openings

+
+
+ + + +