177 karma · joined December 10, 2009
A strong point in AngularJS's favour when a bunch of my coworkers were evaluating different frameworks was that it was designed with testing in mind: dependency injection as a pervasive feature is huge for us, because that's what we've been doing on the server side (C#) for a long time. Angular seems to be encouraging its users to modularise code more, and that's a good thing.
We have fairly comprehensive test coverage of our JS code, this is pretty easy if you take the happy default path of Karma and Jasmine. From my point of view, we've always had comprehensive server side testing, now that a lot of logic has shifted to the client and sits on top of a much lighter-weight API on the backend. All that JS code needs to be tested.
Apart from lower level unit testing, we also have integration tests which drive real browsers through our apps. This is pretty important to make sure the whole thing including the server side code works together properly. These gain immense value as the project grows in size and complexity.
The biggest problem AngularJS has is documentation. Some of it is missing, some of it is poorly explained, all of it should have examples. The developer guide and API reference both need a rework/rewrite. I think the team should focus on this after this major 1.2 release.
What comes out of poor documentation is that best practices are not immediately obvious, because if you're trying to guess things from just the API and just picking a random way to achieve your end result, chances are you're going to do it wrong. This has been identified at https://github.com/angular-ui/community/issues/1 so hopefully it's going to get better.
The major thing which I think almost everyone gets wrong at first are the relationships between templates, scopes, controllers, services and your actual data. If you get this wrong you'll either end up writing a bunch of tricky workaround code, having memory leaks or subtle data binding bugs.
I highly recommend everyone watches the best practices video from the AngularJS team at http://www.youtube.com/watch?v=ZhfUv0spHCY