Jest ile Birim Testleri
Jest test çatısını kullanarak tek tek işlevler ve modüller için yalıtılmış birim testleri yazmayı öğrenin
Jest ile Birim Testleri, CoddyKit'te ücretsiz bir Node.js Backend Development Bootcamp dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Node.js Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Node.js Backend Development Bootcamp kursu toplamda 4 dersten oluşur.
Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.
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!
Sıkça Sorulan Sorular
“Jest ile Birim Testleri” dersi ücretsiz mi?
Evet — “Jest ile Birim Testleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Node.js Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Node.js Backend Development Bootcamp kursu toplamda 4 dersten oluşur.
“Jest ile Birim Testleri” dersinde ne öğreneceğim?
Jest test çatısını kullanarak tek tek işlevler ve modüller için yalıtılmış birim testleri yazmayı öğrenin Node.js Backend Development Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Node.js Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Node.js Backend Development Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Jest ile Birim Testleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Node.js Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Node.js Backend Development Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Jest ile Birim Testleri
- API Uç Noktaları için Entegrasyon Testleri
- Etkili Hata Ayıklama Teknikleri
- Node.js'te Taklitler ve Test Çiftleri