
Learn how to initialise our NodeJs Express test-driven development project with Jest
Learn how to create a simple Nodejs Express REST API in just 10 minutes!
A brieft introduction to the various REST HTTP Methods we can use inside the Nodejs Express REST API.
How to install Jest to use with Nodejs Express for test-driven development
Making our first test with Jest for Nodejs Express REST API with test-driven development
Making our first test with Jest for Nodejs Express REST API with test-driven development PASS
How to setup Jest to automatically run on file changes in our Nodejs Express app
Defining our Mongoose/MongoDB model to use with our Express REST API.
How to use jest.fn() to mock functions in our Mongoose model to verify that our Express controller has called the model correctly
Making our jest.fn() to mock functions in our Mongoose model to verify that our Express controller has called the model correctly
How to setup our Jest test environment correctly when using Mongoose inside Nodejs Express.
How to use node-mocks-http package to verify that our Nodejs Express Request and Response objects have been used correctly
How to write a Jest test with node-mocks-http Request object with the Express controller and making the test pass
How can we test if the response status code is set correctly and that the response is actually being sent back in Nodejs Express with Jest?
How to test if JSON body is being sent back correctly in our Nodejs Express REST API with Jest
Export the express app for supertest, then implement the todos post route to return 201 for resource creation, bridging unit tests to true integration testing.
Add express.json middleware in App.js to parse JSON payloads on post endpoints, ensuring request.body is populated for tests.
Fix the address already in use error by preventing double app.listen during tests, so the test app runs only once and avoids unhandled promise rejection.
Connect a node express API to a cloud MongoDB using mongoose by creating a connect module, exporting a connect function, and wiring it into app.js for integration tests.
Explore error handling in unit and integration tests using Jest, by validating required fields like title and done in a to-do model and preventing unhandled promise rejections.
Align the unit and integration tests with Jest by matching expected and received errors, then run a final manual Postman test to verify proper error handling.
Create a jest test for the get todos controller to return status 200 with a json body of all todos, using a mocked Todo.find.
Experiment with error handling in a Node.js Express app by writing async tests with Jest that verify next is called with an error and implement try-catch in the todo controller.
Learn to implement and test the get todo by id endpoint, create a focused unit test to ensure the method exists, and validate fetching a single todo by id.
Write a unit test that mocks Todo.findById to return a todo item, asserts a 200 response and a json body matching the Todo in an express route, using Jest.
Implement error handling tests in a Node.js Express app using Jest, asserting rejected promises propagate via next and handling not-found items in the get by id controller.
Handle the not-found TodoModel case by returning a 404 when an item is missing, and update tests to mock find by ID returning null.
Explore updating a non-existent todo by id, which returns a 404 with a null update result, validated by unit tests, and proceed to the integration test in the next lecture.
HTTP put integration test for updating a todo in a rest api, validating status 200 and updated title and done fields, and add a 404 test case.
Learn to implement the delete endpoint in nodejs express, test the http delete by finding by ID and deleting the Todo, and use jest.mock to replace the whole Todo model.
Learn to test the http delete method from unit to integration tests in node express, covering find by id and delete, 200 responses, and 404 not found handling.
Learn how to write a full CRUD REST API with Nodejs, Express and Jest using the test-driven development method!
TDD is becoming more and more of standard, and for good reasons!
With TDD, you can feel more safe and secure that any changes you make are not breaking existing functionality in your applications. Manual tests cannot be sustainable in large applications, or even medium applications. Plus, they're incredibly tedious.
Without TDD... well, you know the story. You try to add functionality while trying to touch the existing code as little as possible, because you don't want to break things unintentionally..
With TDD you won't be scared to make big refactors in your code to clean up messy code, you will know quickly if you've broken any existing functionality!
I'll show you step-by-step how to create a REST API with Express with unit tests and integration tests using the Jest test framework. There's going to be lots of opportunities for you to work on your own and do some exercises as well for optimal learning!
If you have any questions or suggestions to the course, feel free to message me anytime, I love interacting with my students!