Reputation: 1899
I'm currently employing the use of Jest in my CRA application. I see that CRA opted for the use of filename.test.js
format when writing tests but I find this approach a bit cumbersome on the eyes and brain. I found out that you can write tests in a folder named __tests__
and jest will automatically run the tests in that folder. I like this approach. My question now is, what is the standard when using this setup? Usually, my src
folder is set up as such:
src
└── components
├── some1ComponentDir
└── some2ComponentDir
Do I create a __tests__
folder at each level or do I mock the structure of my src
folder inside of my __tests__
folder located inside the src
folder?
If you think this is a silly question, please just ignore it and move on. Thanks for any help.
Upvotes: 86
Views: 70902
Reputation: 19554
The conventions for Jest, in order of best to worst in my opinion:
src/file.test.js
mentioned first in the Getting Started docs, and is great for keeping tests (especially unit) easy to find next to source filessrc/__tests__/file.js
lets you have multiple __tests__
directories so tests are still near original files without cluttering the same directories__tests__/file.js
more like older test frameworks that put all the tests in a separate directory; while Jest does support it, it's not as easy to keep tests organized and discoverableSince you don't want 1, it sounds like 2 is your best option.
Upvotes: 137
Reputation: 9344
A testing folder structure I like:
src / __tests__
├── components
│ ├── componentOne.test.js
│ ├── componentTwo.test.js
│ └── .....
├── functions
│ ├── functionOne.test.js
│ ├── functionTwo.test.js
│ └── .....
├── ....
Upvotes: 7