Jest ile Sahte API Çağrıları Nasıl Yapılır: Eksiksiz Bir Eğitim

Jest ile API çağrılarını sahtelemek, güvenilir ve hızlı testler için önemlidir. Gelişmiş durumlar için sahte yanıtları ve adaptörleri kontrol etmek için kapsamlı kütüphanesini kullanın.

Efe Demir

Efe Demir

5 June 2025

Jest ile Sahte API Çağrıları Nasıl Yapılır: Eksiksiz Bir Eğitim

API çağrıları yapan kodlar için test yazarken, testlerinizin güvenilir, hızlı ve harici bir servise bağımlı olmamasını sağlamak için bu çağrıları taklit etmek önemlidir. Popüler bir JavaScript test çerçevesi olan Jest, testlerinizde API çağrılarını kolayca taklit etmenin çeşitli yollarını sunar. Kullanabileceğiniz farklı yaklaşımlara dalalım.

💡
API'leri herhangi bir uygulamayla taklit edebilirsiniz, ancak Apidog adlı en iyi API platformunu kullanmayı düşünebilirsiniz!

Apidog, geliştiricilere tüm API yaşam döngüsü için yüksek kaliteli işlevsellikler sağlayan kapsamlı bir düşük kodlu API platformudur. Otomatik kod oluşturma, CI/CD entegrasyonu ve özelleştirilebilir komut dosyaları gibi ek araçlarla, tek bir platformda profesyonel API geliştirme deneyimi yaşayın!

Apidog hakkında daha fazla bilgi edinmek için aşağıdaki düğmeye tıklayın!

jest.mock() Kullanımı

Jest'te API çağrılarını taklit etmenin bir yolu, API isteğini yapan modülün tamamını taklit etmek için jest.mock() işlevini kullanmaktır. İşte bir örnek:

// api.js
import axios from 'axios';

export const getUsers = () => {
  return axios.get('/users');
};
// api.test.js
import axios from 'axios';
import { getUsers } from './api';

jest.mock('axios');

test('getUsers returns data from API', async () => {
  const users = [{ id: 1, name: 'John' }];
  axios.get.mockResolvedValueOnce({ data: users });
  
  const result = await getUsers();
  
  expect(axios.get).toHaveBeenCalledWith('/users');
  expect(result.data).toEqual(users);
});

Bu örnekte, tüm axios modülünü otomatik olarak taklit etmek için jest.mock('axios') kullanıyoruz. Ardından, bir sonraki axios.get çağrısı için yanıtı taklit etmek için axios.get.mockResolvedValueOnce() kullanıyoruz. Testimiz daha sonra API'nin doğru şekilde çağrıldığını ve taklit edilen verileri döndürdüğünü doğrulayabilir1.

Manuel Taklitleri Kullanma

Başka bir yaklaşım, bir __mocks__ klasörü oluşturarak ve içine bir taklit uygulama dosyası koyarak API çağrısı yapan modülü manuel olarak taklit etmektir:

// __mocks__/axios.js
export default {
  get: jest.fn(() => Promise.resolve({ data: {} })),
  post: jest.fn(() => Promise.resolve({ data: {} })),
  // ...
};

Şimdi testinizde, her test için farklı yanıtları taklit edebilirsiniz:

// api.test.js
import axios from 'axios';
import { getUsers } from './api';

jest.mock('axios');

test('getUsers returns data from API', async () => {
  const users = [{ id: 1, name: 'John' }];
  axios.get.mockResolvedValueOnce({ data: users });
  
  const result = await getUsers();
  
  expect(axios.get).toHaveBeenCalledWith('/users');
  expect(result.data).toEqual(users);
});

Bu manuel taklitle, get, post vb. gibi farklı Axios yöntemlerini kendi uygulamalarınızla taklit etme konusunda tam kontrole sahipsiniz2.

Axios-mock-adapter Kullanımı

Axios isteklerini daha gelişmiş bir şekilde taklit etmek için kitaplığı kullanabilirsiniz. İlk olarak, yükleyin:

npm install axios-mock-adapter --save-dev

Ardından testlerinizde:

// api.test.js
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import { getUsers } from './api';

describe('getUsers', () => {
  let mock;
  
  beforeAll(() => {
    mock = new MockAdapter(axios);
  });
  
  afterEach(() => {  
    mock.reset();
  });
  
  test('returns users data', async () => {
    const users = [{ id: 1, name: 'John' }];
    mock.onGet('/users').reply(200, users);
    
    const result = await getUsers();
    
    expect(result.data).toEqual(users);  
  });
});

axios-mock-adapter ile, istekleri URL'lere, parametrelere, başlıklara ve daha fazlasına göre taklit edebilirsiniz. Ayrıca hataları ve zaman aşımlarını da simüle edebilirsiniz.

Taklit Edilmiş Bir Axios Örneği Enjekte Etme

Kodunuz doğrudan axios kullanıyorsa, başka bir seçenek, testler sırasında taklit edilmiş bir axios örneğini kodunuza enjekte etmektir:

// api.js
import axios from 'axios';

export const getUsers = () => {
  return axios.get('/users');
};
// api.test.js
import axios from 'axios';
import { getUsers } from './api';

jest.mock('axios', () => ({
  get: jest.fn(),
}));

test('getUsers returns data from API', async () => {
  const users = [{ id: 1, name: 'John' }];
  axios.get.mockResolvedValueOnce({ data: users });
  
  const result = await getUsers();
  
  expect(axios.get).toHaveBeenCalledWith('/users');
  expect(result.data).toEqual(users);
});

Burada, tüm modülü değil, axios'un kendisini taklit ediyoruz ve kendi taklit edilmiş get işlevimizi sağlıyoruz.

API Çağrılarını Taklit Etme İpuçları

Jest'te API çağrılarını taklit ederken aklınızda bulundurmanız gereken birkaç ipucu:

Apidog ile API'leri Taklit Edin

Farklı bir API geliştirme deneyimi denemek isterseniz, Apidog'u kullanmayı düşünebilirsiniz!

apidog interface
button

Apidog, geliştiricilere API'ler geliştirmek için basit ve sezgisel bir kullanıcı arayüzü sağlayan düşük kodlu bir API platformudur. Apidog ile API'ler oluşturabilir, test edebilir, taklit edebilir ve belgeleyebilirsiniz. Apidog'a daha yakından bakalım!

Apidog Akıllı Taklit

apidog smart mock

Kesin taklit kurallarınız yoksa, Apidog'un manuel yapılandırma olmadan otomatik olarak gerçekçi taklit verileri oluşturmasına izin verin.

Apidog Gelişmiş Taklit

apidog advanced mock
button

İstemci ve sunucu tarafı arasındaki gerçek yaşam etkileşimlerini simüle etmek için özel komut dosyalarıyla API yanıtlarını değiştirin.

Apidog Bulut Taklidi

apidog cloud mock

Bulut taklit sunucusunda erişilebilen sabit bir adres aracılığıyla ekibinizle bulut taklit özelliğiyle işbirliği yapın.

Sonuç

Taklit, özellikle API çağrıları gibi harici bağımlılıklarla uğraşırken, iyi testler yazmak için temel bir beceridir. Jest, jest.mock() ile tüm modülleri taklit etmekten, modülleri manuel olarak taklit etmeye, daha gelişmiş durumlar için axios-mock-adapter gibi kitaplıklar kullanmaya kadar, testlerinizde API çağrılarını taklit etmenin birçok yolunu sunar. Önemli olan, testlerinizi bağımsız tutarken ve API'lerin uygulama ayrıntılarına değil, test edilen koda odaklanırken, ihtiyaçlarınız için doğru yaklaşımı seçmektir. Bu taklit teknikleriyle, API'lere bağlı kod için dayanıklı testler yazabilirsiniz.

Explore more

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Yerel DeepSeek R1'i Cursor IDE ile kurun ve yapılandırın. Özel, uygun maliyetli AI kodlama yardımı için.

4 June 2025

Android'de Gemma 3n Nasıl Çalıştırılır?

Android'de Gemma 3n Nasıl Çalıştırılır?

Google AI Edge Gallery'den Gemma 3n'i Android'e kurup çalıştırmayı öğrenin.

3 June 2025

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

Claude Code'u GitHub Actions ile entegre edin: Kod incelemeleri, hata düzeltmeleri ve özellik uygulamaları. Kurulum, iş akışları ve geliştiriciler için ipuçları.

29 May 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin