Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

REST API level TDD with NodeJS


Published on

REST API level TDD with NodeJS

Published in: Technology
  • Be the first to comment

  • Be the first to like this

REST API level TDD with NodeJS

  1. 1. REST API-LEVEL TDD WITH NODEJS Dang Viet Ha @ Tech Talk #2, Hanoi 2016
  2. 2. AGENDA  What is TDD?  The Benefits and Limitations of TDD  Common Pitfalls of TDD  REST-API TDD with Node.js  Demo  Question?
  3. 3. WHAT IS TDD?  TDD: Test Driven Development refers to a style of programming in which three activities are tightly interwoven 1. Coding 2. Testing (Unit Test) 3. Design (Refactoring)  Basic Philosophy 1. write a "single" unit test describing an aspect of the program 2. run the test, which should fail because the program lacks that feature 3. write "just enough" code, the simplest possible, to make the test pass 4. "refactor" the code until it conforms to the simplicity criteria 5. repeat, "accumulating" unit tests over time
  4. 4. WHAT IS TDD?
  5. 5. THE BENEFITS AND LIMITATIONS  Benefits 1. Writing tests first require you to really consider what you want from the code 2. Short feedback loop 3. Reduced time in rework 4. Less time spent in the debugger 5. Simplification & Loose Coupling (DI) 6. Improves quality and reduces bugs  Limitations 1. Bigger up-front cost 2. Some codes are difficult to write the test. 3. Focus on micro-design not macro-design 4. Need to use mock to reproduce the real world. 5. Cannot cover all functional testing (UI, DB, Network,…)
  6. 6. COMMON PITFALLS  Individual mistakes 1. Forgetting to run tests frequently 2. Writing too many tests at once 3. Writing tests that are too large or coarse-grained 4. Writing overly trivial tests, for instance omitting assertions 5. Writing tests for trivial code, for instance assessors  Team pitfalls 1. Partial adoption - only a few developers on the team use TDD 2. Poor maintenance of the test suite - most commonly leading to a test suite with a prohibitively long running time 3. Abandoned test suite (i.e. seldom or never run) - sometimes as a result of poor maintenance, sometimes as a result of team turnover
  7. 7. REST-API TDD WITH NODE.JS  REST-API: Express and Mongoose  Authorization: Passport  Dependencies Injection: Wagner  Test framework: Mocha  Validation & Assertion: Assert  HTTP Request: Super-Agent  Test And Watch task running: Gulp
  8. 8. REST-API
  9. 9. MOCHA
  10. 10. MOCHA
  11. 11. MOCHA
  12. 12. GULP TASK
  13. 13. DEMO
  14. 14. DEMO
  15. 15. DEMO
  16. 16. DEMO
  17. 17. DEMO
  18. 18. Q&A