The Ultimate Guide to Unit Testing in JavaScript.

A Thread...

"A unit test should test the behavior of a unit of work."

Unit tests are isolated and independent of each other.

- Any given behavior should be specified in one and only one test

- The execution/order of execution of one test cannot affect the others

- Repeatable

- Fast
"Ultimate Guidelines Which Helped Me a Lot."

- Whenever possible, use TDD

- Structure your tests properly

- Name your tests properly

- Don't comment out tests

- Avoid logic in your tests

- Don't write unnecessary expectations

- Know your testing framework API
- Consider using factory functions in the tests

- Don't test multiple concerns in the same test

- Cover the general case and the edge cases

- Test the behavior, not the internal implementation

- Don't mock everything

- Create new tests for every defect

- Test simple actions
- Review test code first

- When applying TDD, always start by writing the simplest failing test

- When applying TDD, always make small steps in each test-first cycle

- Properly set up the actions that apply to all the tests involved

Remember "Unit tests are code too"
Ok, I'll stop here.

Note: These guidelines can be leveraged for all the languages capable of unit testing.

Check out more in the blog post. ⬇

The Ultimate Guide to Unit Testing in JavaScript.

🔗 https://t.co/wvqfoN8ZdD

You May Also Like

A brief analysis and comparison of the CSS for Twitter's PWA vs Twitter's legacy desktop website. The difference is dramatic and I'll touch on some reasons why.

Legacy site *downloads* ~630 KB CSS per theme and writing direction.

6,769 rules
9,252 selectors
16.7k declarations
3,370 unique declarations
44 media queries
36 unique colors
50 unique background colors
46 unique font sizes
39 unique z-indices

https://t.co/qyl4Bt1i5x


PWA *incrementally generates* ~30 KB CSS that handles all themes and writing directions.

735 rules
740 selectors
757 declarations
730 unique declarations
0 media queries
11 unique colors
32 unique background colors
15 unique font sizes
7 unique z-indices

https://t.co/w7oNG5KUkJ


The legacy site's CSS is what happens when hundreds of people directly write CSS over many years. Specificity wars, redundancy, a house of cards that can't be fixed. The result is extremely inefficient and error-prone styling that punishes users and developers.

The PWA's CSS is generated on-demand by a JS framework that manages styles and outputs "atomic CSS". The framework can enforce strict constraints and perform optimisations, which is why the CSS is so much smaller and safer. Style conflicts and unbounded CSS growth are avoided.