O'Reilly logo

Closure: The Definitive Guide by Michael Bolin

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 15. Testing Framework

Testing your code is like flossing: you know that it is important for the hygiene of your codebase, but you neglect to do it anyway. Why is this? Many developers complain that testing is painful: “Tests are too hard to write,” “Writing tests is boring,” or “Testing makes my gums bleed.” Much of this has to do with your coding style and the tools that you use for testing (though if your gums actually start bleeding when you write tests, you should have that checked out). Fortunately, the way that code is written in the Closure Library makes it easy to inspect values from your tests and to mock out functionality to reduce the amount of setup required to create a test. Writing tests will let you respond to your teammates with confidence when they ask about how much “flossing” you have done to ensure that your code will work in production.

The Closure Testing Framework that is downloaded with the Closure Library can be used to test any JavaScript code: the code under test need not be written in the style of the Closure Library. The API provided by the Testing Framework is heavily influenced by two other popular testing tools: JsUnit (which itself is modeled after JUnit), and EasyMock.

As such, the Closure Testing Framework is primarily designed for creating unit tests, which are tests for very specific units of code. Typically, each JavaScript file in the Closure Library has its own unit test that tests the code in that file and nothing else. This way, if ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required