Testy jednostkowe za pomocą Jest
Nauczą się Państwo pisać izolowane testy jednostkowe dla poszczególnych funkcji i modułów z użyciem frameworka testowego Jest.
Testy jednostkowe za pomocą Jest to bezpłatna lekcja Node.js Backend Development Bootcamp na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Node.js Backend Development Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Node.js Backend Development Bootcamp zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
What is Unit Testing?
Welcome to unit testing! This is a fundamental practice in software development where individual components or functions of your application are tested in isolation.
Think of it like checking each gear in a clock separately to ensure it works perfectly before assembling the whole mechanism. This helps catch bugs early!
Meet Jest: Your Testing Buddy
For Node.js, Jest is one of the most popular and developer-friendly testing frameworks. It's developed by Facebook and offers a complete, integrated solution for JavaScript testing.
- Zero Config: Often works out of the box.
- Fast: Designed for performance.
- Rich API: Powerful assertion library (matchers) included.
- Snapshot Testing: Great for UI components.
Installing Jest
Getting started with Jest is easy. You'll install it as a development dependency in your Node.js project. Open your terminal in your project's root directory and run:
npm install --save-dev jest
After installation, you can add a script to your package.json file to easily run your tests:
"scripts": { "test": "jest" }
Our First Function to Test
Let's write a simple function that we want to test. This function will add two numbers. We'll put it in a file named sum.js.
You can run this file directly to see the function in action, but later we'll use Jest to test it automatically!
function sum(a, b) {
return a + b;
}
// This allows us to use 'sum' in other files
module.exports = sum;
// Optional: Run this part only if the file is executed directly
if (require.main === module) {
console.log("Running sum(2, 3):");
console.log("Result: ", sum(2, 3)); // Expected: 5
}Structuring Your Test File
Jest looks for test files with specific naming conventions, usually .test.js or .spec.js. Let's create sum.test.js in the same directory.
Inside, we use describe() to group related tests and test() (or it()) for individual test cases. This makes your tests organized and readable.
Making Assertions with Matchers
Inside a test() block, we use expect() combined with a "matcher" to assert that a value meets certain conditions. For example, .toBe() checks for exact equality.
Here's how we'd test our sum function:
const sum = require('./sum');
describe('sum function', () => {
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
test('adds 0 + 0 to equal 0', () => {
expect(sum(0, 0)).toBe(0);
});
test('adds negative numbers correctly', () => {
expect(sum(-1, -2)).toBe(-3);
});
});Running Your Tests
Now that you have your sum.js and sum.test.js files, and Jest installed with the script configured, you can run your tests!
Simply type npm test in your terminal. Jest will find your .test.js files, execute them, and report the results. You'll see green if all tests pass!
Handling Async Tests
Many Node.js applications deal with asynchronous operations (like fetching data, database calls). Jest handles these beautifully!
You can use async/await directly in your test functions. Jest will wait for the promise to resolve before completing the test.
function fetchData() {
return new Promise(resolve => {
setTimeout(() => {
resolve("Data from API");
}, 50);
});
}
module.exports = fetchData;
// Optional: Run this part only if the file is executed directly
if (require.main === module) {
console.log("Simulating data fetch...");
fetchData().then(data => console.log("Received: ", data));
}Writing Async Tests
To test our fetchData function, we'll mark our test function as async. Jest also provides special matchers like .resolves and .rejects for promises.
Using await within your test makes asynchronous code look synchronous, improving readability.
const fetchData = require('./fetchData');
describe('fetchData function', () => {
test('should return "Data from API"', async () => {
const data = await fetchData();
expect(data).toBe('Data from API');
});
test('should resolve with specific data', () => {
return expect(fetchData()).resolves.toBe('Data from API');
});
});Jest Matcher Check
Which of the following Jest matchers would you use to check if two objects have the same value (deep comparison), not just if they are the same instance?
Unit Testing with Jest: Recap
Great job! You've learned the basics of unit testing with Jest. We covered:
- What unit testing is and its benefits.
- How to install and set up Jest.
- Structuring tests with
describeandtest. - Making assertions using
expectand matchers like.toBe()and.toEqual(). - Handling asynchronous code with
async/await.
Keep practicing and happy testing!
Często zadawane pytania
Czy lekcja „Testy jednostkowe za pomocą Jest” jest bezpłatna?
Tak — pełny tekst „Testy jednostkowe za pomocą Jest” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Node.js Backend Development Bootcamp, przejdź na CoddyKit PRO. Kurs Node.js Backend Development Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Testy jednostkowe za pomocą Jest”?
Nauczą się Państwo pisać izolowane testy jednostkowe dla poszczególnych funkcji i modułów z użyciem frameworka testowego Jest. Ćwiczysz Node.js Backend Development Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Node.js Backend Development Bootcamp?
Nie wymagamy żadnego doświadczenia. Node.js Backend Development Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Testy jednostkowe za pomocą Jest”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Node.js Backend Development Bootcamp?
Tak. Każda lekcja Node.js Backend Development Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Testy jednostkowe za pomocą Jest
- Testy integracyjne endpointów API
- Skuteczne techniki debugowania
- Mockowanie i obiekty testowe w Node.js