Test-Driven JavaScript Development
eBook - ePub

Test-Driven JavaScript Development

  1. 240 pages
  2. English
  3. ePUB (mobile friendly)
  4. Available on iOS & Android
eBook - ePub

Test-Driven JavaScript Development

About this book

Learn JavaScript test-driven development using popular frameworks and tools

About This Book

  • Learn the life cycle of TDD and its importance in real-world application
  • Gain knowledge about popular tools and analyze features, syntax, and how they help in JavaScript testing
  • Implement test-driven programming exercises using the practical code examples

Who This Book Is For

If you have an intermediate knowledge of HTML, CSS, and JavaScript and want to learn how and why the test-driven development approach is better for your assignments, then this book is for you.

What You Will Learn

  • Basic TDD fundamentals, life cycle, and benefits
  • Become acquainted with the concepts and elements of unit testing and writing basic unit tests for JavaScript
  • Understand the way JsUnit, Qunit, Karma and DalekJs work
  • Use the Jasmine framework
  • Interpret feature detection and devise tests specific to cross-browser compatibility
  • Integrate jsTestDriver with Eclipse and run tests with jsTestDriver
  • Explore re-factoring, adding and notifying observers
  • Understand test-driven development in case of server-side JS

In Detail

Initially, all processing used to happen on the server-side and simple output was the response to web browsers. Nowadays, there are so many JavaScript frameworks and libraries created that help readers to create charts, animations, simulations, and so on. By the time a project finishes or reaches a stable state, so much JavaScript code has already been written that changing and maintaining it further is tedious. Here comes the importance of automated testing and more specifically, developing all that code in a test-driven environment. Test-driven development is a methodology that makes testing the central part of the design process – before writing code developers decide upon the conditions that code must meet to pass a test. The end goal is to help the readers understand the importance and process of using TDD as a part of development.

This book starts with the details about test-driven development, its importance, need, and benefits. Later the book introduces popular tools and frameworks like YUI, Karma, QUnit, DalekJS, JsUnit and goes on to utilize Jasmine, Mocha, Karma for advanced concepts like feature detection, server-side testing, and patterns. We are going to understand, write, and run tests, and further debug our programs. The book concludes with best practices in JavaScript testing. By the end of the book, the readers will know why they should test, how to do it most efficiently, and will have a number of versatile tests (and methods for devising new tests) to get to work immediately.

Style and approach

Easy-to-follow guide with suitable examples for developing JavaScript code in the test-Driven environment, with popular tools and frameworks. User experience and statements are also included to help readers make a better choice of tool for real-world projects.

Tools to learn more effectively

Saving Books

Saving Books

Keyword Search

Keyword Search

Annotating Text

Annotating Text

Listen to it instead

Listen to it instead

Test-Driven JavaScript Development


Table of Contents

Test-Driven JavaScript Development
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Overview of TDD
Complexity of web pages
Understanding test-driven development
The need for testing
Types of testing
The life cycle of TDD
TDD microcycle
Agile and TDD
Benefits of TDD and common myths
Benefits
Myths
Summary
2. Testing Concepts
Unit testing
Unit testing frameworks
YUI Tests
Following the process
Preparing the environment
Following the life cycle
Writing a test
Running the test and seeing if test fails
Writing a production code
Running all tests
Cleaning up the code
Repeat
Using the browser console
setUp() and tearDown()
Test suites
Actions and assertions
Actions
Assertions
Benefits and pitfalls
Benefits of unit testing
Pitfalls of unit testing
Summary
3. Testing Tools
JsUnit
Getting started
Writing tests
Running tests
QUnit
Getting started
Writing tests
Running tests
Karma with Jasmine
Getting started
Writing tests
Running tests
DalekJS
Getting started
Writing tests
Actions
Assertions
Running tests
Summary
4. Jasmine
Understanding behavior-driven development
Setting up Jasmine
describe and specs
Expectations
Matchers
Set up and tear down
Spies
Tracking spies using calls
Creating a custom spy
Jasmine clock
Creating a custom matcher
Creating a custom equality tester
Asynchronous calls
The Jasmine Ajax plugin
Nesting suites
Disabling suites and specs
Summary
5. JsTestDriver
JsTestDriver
Overview
Getting started
Writing tests
Assertions
Capturing the browser
Restructuring your project
The configuration file
Running tests using the command prompt
Setting up JsTestDriver with IDE
Running the tests
Running Jasmine specs
Code coverage
Summary
6. Feature Detection
Understanding feature detection
Available methods and libraries
has.js
Writing custom tests
Modernizr
Downloading and setting up Modernizr
How it works
Using Modernizr
Polyfills
Loading polyfills
Supported browsers
Browser detection
User agent sniffing
Object detection
Features testing with Modernizr
CSS features
HTML5 features
Miscellaneous features
Plugins for additional tests
Modernizr methods
Modernizr.prefixed()
Modernizr.prefixedCSS()
Modernizr.mq()
Modernizr.on()
Modernizr.atRule()
Modernizr.addTest()
Modernizr.testStyles()
Modernizr.testProp()
Modernizr.testAllProps()
Modernizr.hasEvent()
Modernizr._prefixes and Modernizr._domPrefixes
Undetectable features
Summary
7. Observer Design Pattern
Overview
When to use it
Advantages
Disadvantages
Different implementations of the observer
Event dispatcher/listener
Publish/subscribe
Push versus pull
Sample code
Understanding patterns in API
The notify method
Subscribe
Unsubscribe
Observer with topics
Observer pattern using jQuery.Callbacks
Implementing the observer pattern using TDD
Red step (code with error)
Green step (with running code)
Refactoring
Hot swapping components
Browser compatibility of the observer API
Summary
8. Testing with Server-Side JS
Setting up the environment
Installing Node.js
Setting up the application
Choosing a test runner
Mocha and Chai
Server-side unit testing
Implementing the web server
Helpdesk – sample application
Setting up the MongoDB database
The Mocha test
Summary
9. Best Practices
TDD best practices
Follow proper rules to define test cases
Make test case names more readable
Keep the same name for test files and source files
Keep the name descriptive
Applying proper processes
Making sure that tests are written before starting implementation
Modifying/writing new code only when the test is failing
Running all the tests when we modify anything in the existing code
Existing tests should pass before new tests are written
Cleaning up code once all test cases are passed
Follow right development practices
Simple code that can be easily understood
Writing assertions first
One assertion per test is enough
Keep your focus on findability
Reducing duplication
Tests should run fast
Using mocks
Using stubs
Using setUp and tearDown methods
Choosing the right tool
Feature detection tools
Server-side testing tools
Asynchronous testing
Running time of unit tests
Browser support
Other features
JsLint
Summary
Index

Test-Driven JavaScript Development

Copyright © 2015 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the compa...

Table of contents

  1. Test-Driven JavaScript Development

Frequently asked questions

Yes, you can cancel anytime from the Subscription tab in your account settings on the Perlego website. Your subscription will stay active until the end of your current billing period. Learn how to cancel your subscription
No, books cannot be downloaded as external files, such as PDFs, for use outside of Perlego. However, you can download books within the Perlego app for offline reading on mobile or tablet. Learn how to download books offline
Perlego offers two plans: Essential and Complete
  • Essential is ideal for learners and professionals who enjoy exploring a wide range of subjects. Access the Essential Library with 800,000+ trusted titles and best-sellers across business, personal growth, and the humanities. Includes unlimited reading time and Standard Read Aloud voice.
  • Complete: Perfect for advanced learners and researchers needing full, unrestricted access. Unlock 1.4M+ books across hundreds of subjects, including academic and specialized titles. The Complete Plan also includes advanced features like Premium Read Aloud and Research Assistant.
Both plans are available with monthly, semester, or annual billing cycles.
We are an online textbook subscription service, where you can get access to an entire online library for less than the price of a single book per month. With over 1 million books across 990+ topics, we’ve got you covered! Learn about our mission
Look out for the read-aloud symbol on your next book to see if you can listen to it. The read-aloud tool reads text aloud for you, highlighting the text as it is being read. You can pause it, speed it up and slow it down. Learn more about Read Aloud
Yes! You can use the Perlego app on both iOS and Android devices to read anytime, anywhere — even offline. Perfect for commutes or when you’re on the go.
Please note we cannot support devices running on iOS 13 and Android 7 or earlier. Learn more about using the app
Yes, you can access Test-Driven JavaScript Development by Ravi Kumar Gupta, Hetal Prajapati, Harmeet Singh in PDF and/or ePUB format, as well as other popular books in Computer Science & Programming in JavaScript. We have over one million books available in our catalogue for you to explore.