Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Events
Videos
Audiobooks
Packt Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Jasmine JavaScript Testing Update
Jasmine JavaScript Testing Update

Jasmine JavaScript Testing Update: Test your JavaScript applications efficiently using Jasmine and React.js

Arrow left icon
Profile Icon Paulo Vitor Zacharias Ragonha
Arrow right icon
₱2091.99
Full star icon Full star icon Full star icon Full star icon Half star icon 4.2 (14 Ratings)
Paperback Apr 2015 134 pages 1st Edition
eBook
₱1506.59 ₱1673.99
Paperback
₱2091.99
eBook + Subscription
Free Trial
Arrow left icon
Profile Icon Paulo Vitor Zacharias Ragonha
Arrow right icon
₱2091.99
Full star icon Full star icon Full star icon Full star icon Half star icon 4.2 (14 Ratings)
Paperback Apr 2015 134 pages 1st Edition
eBook
₱1506.59 ₱1673.99
Paperback
₱2091.99
eBook + Subscription
Free Trial
eBook
₱1506.59 ₱1673.99
Paperback
₱2091.99
eBook + Subscription
Free Trial

What do you get with a Packt Premium Subscription?

Subscribe today for full access to all titles. After checkout, you’ll receive an eBook credit that you can manually redeem on any title — including this one.
Product feature icon Access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon Weekly additions on emerging tech and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon A monthly credit and 50% off any future digital purchases.
Table of content icon View table of contents Preview book icon Preview Book

Jasmine JavaScript Testing Update

Chapter 1. Getting Started with Jasmine

It is an exciting time to be a JavaScript developer; technologies have matured, web browsers are more standardized, and there are new things to play with every day. JavaScript has become an established language, and the Web is the true open platform of today. We've seen the rise of single-page web applications, the proliferation of Model View Controller (MVC) frameworks, such as Backbone.js and AngularJS, the use of JavaScript on the server with Node.js, and even mobile applications created entirely with HTML, JavaScript, and CSS using technologies such as PhoneGap.

From its humble beginnings with handling HTML forms, to the massive applications of today, the JavaScript language has come very far, and with it, a number of tools have matured to ensure that you can have the same level of quality with it that you have with any other language.

This book is about the tools that keep you in control of your JavaScript development.

JavaScript – the bad parts

There are many complications when dealing with client JavaScript code; the obvious one, is that you cannot control the client's runtime. While on the server, you can run a specific version of your Node.js server, you can't oblige your clients to run the latest version of Chrome or Firefox.

The JavaScript language is defined by the ECMAScript specification; therefore, each browser can have its own implementation of a runtime, which means there could be small differences or bugs between them.

Besides that, you have issues with the language itself. Brendan Eich developed JavaScript in just 10 days, under a lot of management pressure at Netscape. Although it got itself right in its simplicity, first-class functions, and object prototypes, it also introduced some problems with the attempt to make the language malleable and allow it to evolve.

Every JavaScript object is mutable; this means that there is nothing you can do to prevent a module from overwriting pieces of other modules. The following code illustrates how simple it is to overwrite the global console.log function:

console.log('test');
>> 'test'
console.log = 'break';
console.log('test');
>> TypeError: Property 'log' of object #<Console> is not a function

This was a conscious decision on the language design; it allows developers to tinker and add missing functionality to the language. But given such power, it is relatively easy to make a mistake.

Version 5 of the ECMA specification introduced the Object.seal function, which prevents further changes on any object once called. But its current support is not widespread; Internet Explorer, for example, only implemented it on its version 9.

Another problem, is with how JavaScript deals with type. In other languages, an expression like '1' + 1 would probably raise an error; in JavaScript, due to some non-intuitive type coercion rules, the aforementioned code results in '11'. But the main problem is in its inconsistency; on multiplication, a string is converted into a number, so '3' * 4, is actually 12.

This can lead to some hard-to-find problems on big expressions. Suppose you have some data coming from a server, and although you are expecting numbers, one value came as a string:

var a = 1, b = '2', c = 3, d = 4;
var result = a + b + c * d;

The resulting value of the preceding example is '1212', a string.

These are just two common problems faced by developers. Throughout the book, you are going to apply best practices and write tests to guarantee that you don't fall into these, and other, pitfalls.

Jasmine and behavior-driven development

Jasmine is a little behavior-driven development (BDD) test framework created by the developers at Pivotal Labs, to allow you to write automated JavaScript unit tests.

But before we can go any further, first we need to get some fundamentals right, starting with what a test unit is.

A test unit is a piece of code that tests a functionality unit of the application code. But sometimes, it can be tricky to understand what a functionality unit can be, so for that reason, Dan North came up with a solution in the form of BDD, which is a rethink of test-driven development (TDD).

In traditional unit testing practice, the developer is left with loose guidelines on how to start the process of testing, what to test, how big a test should be, or even how to call a test.

To fix these problems, Dan took the concept of user stories from the standard agile construct, as a model on how to write tests.

For example, a music player application could have an acceptance criterion such as:

Given a player, when the song has been paused, then it should indicate that the song is currently paused.

As shown in the following list, this acceptance criterion is written following an underlying pattern:

  • Given: This provides an initial context
  • When: This defines the event that occurs
  • Then: This ensures an outcome

In Jasmine, this translates into a very expressive language that allows tests to be written in a way that reflects actual business values. The preceding acceptance criterion written as a Jasmine test unit would be as follows:

describe("Player", function() {
  describe("when song has been paused", function() {
    it("should indicate that the song is paused", function() {

    });
  });
});

You can see how the criterion translates well into the Jasmine syntax. In the next chapter, we will get into the details of how these functions work.

With Jasmine, as with other BDD frameworks, each acceptance criterion directly translates to a test unit. For that reason, each test unit is usually called a spec, short for specification. During the course of this book, we will be using this terminology.

Downloading Jasmine

Getting started with Jasmine is actually pretty simple.

Open the Jasmine website at http://jasmine.github.io/2.1/introduction.html#section-Downloads and download the Standalone Release (version 2.1.3 is going to be used in the book).

While at the Jasmine website, you might notice that it is actually a live page executing the specs contained in it. This is made possible by the simplicity of the Jasmine framework, allowing it to be executed in the most diverse environments.

After you've downloaded the distribution and uncompressed it, you can open the SpecRunner.html file on your browser. It will show the results of a sample test suite (including the acceptance criterion we showed you earlier):

Downloading Jasmine

This shows the SpecRunner.html file opened on the browser

This SpecRunner.html file is a Jasmine browser spec runner. It is a simple HTML file that references the Jasmine code, the source files, and the test files. For convention purposes, we are going to refer to this file simply as runner.

You can see how simple it is by opening it on a text editor. It is a small HTML file that references the Jasmine source:

<script src="lib/jasmine-2.1.3/jasmine.js"></script>
<script src="lib/jasmine-2.1.3/jasmine-html.js"></script>
<script src="lib/jasmine-2.1.3/boot.js"></script>

The runner references the source files:

<script type="text/javascript" src="src/Player.js"></script>
<script type="text/javascript" src="src/Song.js"></script>

The runner references a special SpecHelper.js file that contains code shared between specs:

<script type="text/javascript" src="spec/SpecHelper.js"></script>

The runner also references the spec files:

<script type="text/javascript" src="spec/PlayerSpec.js"></script>

Tip

Downloading the example code

You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

The Jasmine framework is set up inside the lib/jasmine-2.1.3/boot.js file, and although it's an extensive file, most of its content is in documentation on how the setup actually happens. It is recommended that you open it in a text editor and study its content.

Although, for now, we are running the specs in the browser, in Chapter 8, Build Automation, we are going to make the same specs and code run on a headless browser, such as PhantomJS, and have the results written on the console.

A headless browser is a browser environment without its graphical user interface. It can either be an actual browser environment, such as PhantomJS, which uses the WebKit rendering engine, or a simulated browser environment, such as Envjs.

And although not covered in this book, Jasmine can also be used to test server-side JavaScript code written for environments such as Node.js.

This Jasmine flexibility is amazing, because you can use the same tool to test all sorts of JavaScript code.

Summary

In this chapter, you saw some of the motivations behind testing a JavaScript application. I showed you some common pitfalls of the JavaScript language and how BDD and Jasmine both help you to write better tests.

You have also seen how easy it is to download and get started with Jasmine.

In the next chapter, you are going to learn how to think in BDD and code your very first spec.

Left arrow icon Right arrow icon

Description

This book is for web developers and designers who work with React.js and JavaScript and who are new to unit testing and automation. It's assumed that you have a basic knowledge of JavaScript and HTML.

What you will learn

  • Understand and use the power of Jasmine to create better and more maintainable code bases
  • Drive your application development entirely by tests
  • Write modular and reusable code through the power of ECMA Script 6 (ES6) modules
  • Use asynchronous tests, stubs, and spies optimally
  • Test drive a React.js singlepage application
  • Optimize your code to unleash the power of tooling and automation

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Apr 24, 2015
Length: 134 pages
Edition : 1st
Language : English
ISBN-13 : 9781785282041
Category :
Languages :
Tools :

What do you get with a Packt Premium Subscription?

Subscribe today for full access to all titles. After checkout, you’ll receive an eBook credit that you can manually redeem on any title — including this one.
Product feature icon Access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon Weekly additions on emerging tech and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon A monthly credit and 50% off any future digital purchases.

Product Details

Publication date : Apr 24, 2015
Length: 134 pages
Edition : 1st
Language : English
ISBN-13 : 9781785282041
Category :
Languages :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
$19.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
$199.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just ₱260 each
Feature tick icon Exclusive print discounts
$279.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just ₱260 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total 7,399.97
Test-Driven JavaScript Development
₱2347.99
Jasmine Cookbook
₱2959.99
Jasmine JavaScript Testing Update
₱2091.99
Total 7,399.97 Stars icon

Table of Contents

9 Chapters
1. Getting Started with Jasmine Chevron down icon Chevron up icon
2. Your First Spec Chevron down icon Chevron up icon
3. Testing Frontend Code Chevron down icon Chevron up icon
4. Asynchronous Testing – AJAX Chevron down icon Chevron up icon
5. Jasmine Spies Chevron down icon Chevron up icon
6. Light Speed Unit Testing Chevron down icon Chevron up icon
7. Testing React Applications Chevron down icon Chevron up icon
8. Build Automation Chevron down icon Chevron up icon
Index Chevron down icon Chevron up icon

Customer reviews

Top Reviews
Rating distribution
Full star icon Full star icon Full star icon Full star icon Half star icon 4.2
(14 Ratings)
5 star 64.3%
4 star 7.1%
3 star 14.3%
2 star 14.3%
1 star 0%
Filter icon Filter
Top Reviews

Filter reviews by




Rose May 08, 2019
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Great reference book.
Amazon Verified review Amazon
Richard S. Dec 25, 2014
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Very, very well written! The author stands out in a field that can be very difficult to write books for!
Amazon Verified review Amazon
Krunal Jhaveri Jul 14, 2015
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I was never a test person, until the start of agile world. Now I feel its one of the most important task list for any developer and Jasmine is the best for any javascript application. This update to the previous edition, does all the needful to you. It covers all the basics to right up-to how to code production ready unit test. It has certainly help improved my quality of code and thus would recommend this book to everyone.
Amazon Verified review Amazon
J.P. Jan 04, 2014
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This is a fantastic book but it's not without flaws. I grew up in an era where you typed code in and that's how you learned what to do. There's plenty of that in this book (which is great), but there are big gaps in the source code. You can't just follow along in the book and end up where you need to be. I had to download the code from Packt to fill in the missing details. With that said, this is a great book. It's concise and to the point. No BS chapters on why unit testing is important and other nonsense publishers use to get larger books.
Amazon Verified review Amazon
Dave Bouwman Oct 31, 2013
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I'd been using Jasmine for a few months when I got this book (from the publisher) and I must say that it immediately helped my write better tests. Unlike many books on unit testing, the examples in this book are not trivial. They mirror real-world application problems, and the author narrates the thought process, guiding you from a naive implementation that is difficult to test, through to a cleaner, testable implementation. I gained a lot of insights by reading these narratives, and that alone make this book worthwhile reading.What's really great is that the author takes it further - by refactoring the "application" to use Backbone.js. If you've ever wondered how to do in-depth testing of Backbone views, or how to test event hooks between views and models, this book covers that.Bottom line: if you are using jasmine - this is a great resource. If you are using Jasmine and Backbone - this is a must read.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is included in a Packt Premium subscription? Chevron down icon Chevron up icon

A subscription provides you with full access to view all Packt and licnesed content online, this includes exclusive access to Early Access titles. Depending on the tier chosen you can also earn credits and discounts to use for owning content

What are credits? Chevron down icon Chevron up icon

Credits can be used to buy books DRM free, the same way that you would pay for a book. Your credits can be found in the subscription homepage - subscription.packtpub.com - clicking on ‘the my’ library dropdown and selecting ‘credits’. You'll get one to use immediately after checkout, and then every time you renew. You require an active subscription to use your credits, once used you keep the title forever.

How can I cancel my subscription? Chevron down icon Chevron up icon

To cancel your subscription with us simply go to the account page - found in the top right of the page or at https://subscription.packtpub.com/my-account/subscription - From here you will see the ‘cancel subscription’ button in the grey box with your subscription information in. You can cancel at anytime, you will keep access for the remaining period you have paid for. On the date of cancellation you will lose all access to online content, along with any unused credits.

What happens if an Early Access Course is cancelled? Chevron down icon Chevron up icon

Projects are rarely cancelled, but sometimes it's unavoidable. If an Early Access course is cancelled or excessively delayed, you can exchange your purchase for another course. For further details, please contact us here.

Where can I send feedback about an Early Access title? Chevron down icon Chevron up icon

If you have any feedback about the product you're reading, or Early Access in general, then please fill out a contact form here and we'll make sure the feedback gets to the right team. 

Can I download the code files for Early Access titles? Chevron down icon Chevron up icon

We try to ensure that all books in Early Access have code available to use, download, and fork on GitHub. This helps us be more agile in the development of the book, and helps keep the often changing code base of new versions and new technologies as up to date as possible. Unfortunately, however, there will be rare cases when it is not possible for us to have downloadable code samples available until publication.

When we publish the book, the code files will also be available to download from the Packt website.

How accurate is the publication date? Chevron down icon Chevron up icon

The publication date is as accurate as we can be at any point in the project. Unfortunately, delays can happen. Often those delays are out of our control, such as changes to the technology code base or delays in the tech release. We do our best to give you an accurate estimate of the publication date at any given time, and as more chapters are delivered, the more accurate the delivery date will become.

How will I know when new chapters are ready? Chevron down icon Chevron up icon

We'll let you know every time there has been an update to a course that you've bought in Early Access. You'll get an email to let you know there has been a new chapter, or a change to a previous chapter. The new chapters are automatically added to your account, so you can also check back there any time you're ready and download or read them online.

I am a Packt subscriber, do I get Early Access? Chevron down icon Chevron up icon

Yes, all Early Access content is fully available through your subscription. You will need to have a paid for or active trial subscription in order to access all titles.

How is Early Access delivered? Chevron down icon Chevron up icon

Early Access is currently only available as a PDF or through our online reader. As we make changes or add new chapters, the files in your Packt account will be updated so you can download them again or view them online immediately.

How do I buy Early Access content? Chevron down icon Chevron up icon

Early Access is a way of us getting our content to you quicker, but the method of buying the Early Access course is still the same. Just find the course you want to buy, go through the check-out steps, and you’ll get a confirmation email from us with information and a link to the relevant Early Access courses.

What is Early Access? Chevron down icon Chevron up icon

Keeping up to date with the latest technology is difficult; new versions, new frameworks, new techniques. This feature gives you a head-start to our content, as it's being created. With Early Access you'll receive each chapter as it's written, and get regular updates throughout the product's development, as well as the final course as soon as it's ready.We created Early Access as a means of giving you the information you need, as soon as it's available. As we go through the process of developing a course, 99% of it can be ready but we can't publish until that last 1% falls in to place. Early Access helps to unlock the potential of our content early, to help you start your learning when you need it most. You not only get access to every chapter as it's delivered, edited, and updated, but you'll also get the finalized, DRM-free product to download in any format you want when it's published. As a member of Packt, you'll also be eligible for our exclusive offers, including a free course every day, and discounts on new and popular titles.

Modal Close icon
Modal Close icon