tRPC Testlerinde Bağlamı ve Bağımlılıkları Taklit Etme
Testlerinizde tRPC bağlamını, oturumları ve dış bağımlılıkları taklit ederek yordamları gerçek veritabanlarından ve hizmetlerden yalıtın.
tRPC Testlerinde Bağlamı ve Bağımlılıkları Taklit Etme, CoddyKit'te ücretsiz bir tRPC End-to-End Type Safe APIs dersidir. Bu, 4 dersinin 4. 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, tRPC End-to-End Type Safe APIs öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. tRPC End-to-End Type Safe APIs kursu toplamda 4 dersten oluşur.
Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.
Why Mock the Context
tRPC procedures receive a context holding the db client, the user session, and other services. Real tests should not hit a real database. Mocking the context keeps tests fast and deterministic.
What Lives in Context
A typical context includes:
db— the database clientsession— the authenticated userheaders— request metadata
Your createContext function builds this per request.
Building a Test Context
For tests, write a helper that returns a fake context shaped exactly like the real one.
function createTestContext(overrides = {}) {
return {
db: mockDb,
session: null,
...overrides,
};
}Mocking the Database
Replace the db with an object whose methods are test doubles. With Vitest you can use vi.fn().
const mockDb = {
user: { findUnique: vi.fn() },
};Calling a Procedure Directly
Create a caller from your router with the mock context, then invoke procedures like plain functions.
const caller = appRouter.createCaller(createTestContext());
const result = await caller.user.list();Simulating an Authenticated User
To test a protected procedure, pass a session in the context overrides.
const caller = appRouter.createCaller(
createTestContext({ session: { user: { id: 'u1' } } })
);Stubbing Return Values
Tell the mock what to return for a given call so you can assert on the procedure output.
mockDb.user.findUnique.mockResolvedValue({ id: 'u1', name: 'Ada' });Asserting the Call
Verify the procedure actually queried the db with the expected arguments.
expect(mockDb.user.findUnique).toHaveBeenCalledWith({ where: { id: 'u1' } });Testing Error Paths
Make the mock throw to confirm your procedure handles failures and maps them to the right tRPC error code.
mockDb.user.findUnique.mockRejectedValue(new Error('DB down'));
await expect(caller.user.get({ id: 'u1' })).rejects.toThrow();Mocking External Services
Email senders, payment gateways, and other side-effects should also be mocked. Inject them through the context so tests can supply fakes.
const mailer = { send: vi.fn() };
const caller = appRouter.createCaller(createTestContext({ mailer }));Best Practices
Keep mocked tests reliable:
- Mirror the real context shape exactly
- Reset mocks between tests with
vi.clearAllMocks() - Test both success and failure paths
- Assert on inputs, not just outputs
Quick Check
Test your mocking knowledge.
Recap
You learned to isolate tRPC procedures in tests:
- Build a fake context matching the real shape
- Mock the db and external services with
vi.fn() - Use
createCallerto call procedures directly - Stub return values and assert on inputs
Your unit tests are now fast and dependency-free.
Sıkça Sorulan Sorular
“tRPC Testlerinde Bağlamı ve Bağımlılıkları Taklit Etme” dersi ücretsiz mi?
Evet — “tRPC Testlerinde Bağlamı ve Bağımlılıkları Taklit Etme” 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 tRPC End-to-End Type Safe APIs kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. tRPC End-to-End Type Safe APIs kursu toplamda 4 dersten oluşur.
“tRPC Testlerinde Bağlamı ve Bağımlılıkları Taklit Etme” dersinde ne öğreneceğim?
Testlerinizde tRPC bağlamını, oturumları ve dış bağımlılıkları taklit ederek yordamları gerçek veritabanlarından ve hizmetlerden yalıtın. tRPC End-to-End Type Safe APIs 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.
tRPC End-to-End Type Safe APIs öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te tRPC End-to-End Type Safe APIs, 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 4. dersidir.
“tRPC Testlerinde Bağlamı ve Bağımlılıkları Taklit Etme” 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 tRPC End-to-End Type Safe APIs dersinde kod yazıp çalıştırabilir miyim?
Evet. Her tRPC End-to-End Type Safe APIs 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
- tRPC Yordamlarında Birim Sınamaları
- tRPC Yönlendiricilerinde Tümleştirme Sınamaları
- Uçtan Uca Sınama Stratejileri
- tRPC Testlerinde Bağlamı ve Bağımlılıkları Taklit Etme