If you need end-to-end, browser-based, testing as well, check out Protractor: <a href="https://github.com/angular/protractor/blob/master/README.md" rel="nofollow">https://github.com/angular/protractor/blob/master/README.md</a><p>It's built on top of WebDriverJS. I've been playing with it today and so far it's working very well.
Just to add, <a href="http://www.yearofmoo.com/2013/09/advanced-testing-and-debugging-in-angularjs.html" rel="nofollow">http://www.yearofmoo.com/2013/09/advanced-testing-and-debugg...</a><p>A great article in a series of AngularJS articles, written by Matias Niemelä.
Great article. One thing I wish got more coverage is testing directives: it's already much easier than most DOM-testing methods (though it can't replace selenium etc.), but doing it well and consistently has proven difficult and I don't test most of my directives. For example, I had to modify the triggerHandler function in Angular to allow sending fake key presses since it didn't have a built in way (at least a few months ago) to specify the "which" property on the event.<p>Also, If you're in Chicago, the Angular meetup group will be talking about testing on November 20th: <a href="http://www.meetup.com/AngularJS-Chicago/" rel="nofollow">http://www.meetup.com/AngularJS-Chicago/</a>
Client side testable code is one of the pinnacle of AngularJS.<p>Reuseable declarative UI's through Directives, reuseable business logic throug Services and view models (controllers) having only knowledge of views is a really good for maintainablity of a complex javascript app. AngualrJS can beat any framework out there (Backbone, Ember, etc.) when it comes to having testable & manageable code.<p>If your product is going to be complex, AngularJS is a no-brainer deal.