- easy to understand concept and constructs
- nice support for async calls and flow control
- easy integration with CI tools such as Hudson
- code coverage report
- mocks and stubs
- Vows+APIeasy
- Expresso+node-jscoverage: really like its code coverage feature
- YUITest: somehow had issues writing async operations in setUp and tearDown, also had issues using flow control libraries such as async inside each test
- Jasimine: very clean and easy to understand concept and constructs
- Nodeunit: a detailed tutorial from the author
- node-qunit+jscoverage, qunit is used for JQuery testing and has fairly good async support, here is a fairly detailed article for async testing with qunit
- testosterone+gently
- Sinon.JS
Among those, I like Jasimine most, it is easy to understand and has rich feature set. The only feature missing is lack of code coverage report. jasimine-reporters supports output of JUnit format unit test results. jasimine-node brings Jasimine to node.js. You can check out "Testing Backbone applications with Jasimine and Sinon" for a practical example.