🌐 Network & cy.intercept()
Network & cy.intercept(): cy.intercept() (eski adıyla cy.route(), v6'dan beri kullanılmıyor), Cypress'in network katmanını yakalama API'sidir.
cy.intercept() (eski adıyla cy.route(), v6'dan beri kullanılmıyor), Cypress'in network katmanını yakalama API'sidir. Üç moda göre kullanılabilir: gerçek isteği "stub" ederek sahte veriyle değiştirmek, isteği değiştirmeden sadece "spy" olarak izlemek, ya da gecikme/hata simüle etmek. Bu, Selenium dünyasında ayrı bir proxy sunucusu (BrowserMob Proxy gibi) kurmadan asla yapamayacağın bir şeydir.
Stub ve Spy Kullanımı
Micro Lab: Cypress — API Intercept
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
Adim Adim: Cypress — API Intercept
Hangi endpoint yakalanacak belirle: URL pattern veya method + pattern
cy.intercept("GET", "**/api/users", { fixture: "users.json" }).as("getUsers") kur
cy.visit() veya aksiyonu tetikle, intercept'in ateşlenmesini bekle
cy.wait("@getUsers") ile istek gerceklesene kadar bekle
cy.get("@getUsers").its("response.statusCode").should("eq", 200) dogrula
Cypress ile API intercept kurma sirasi nedir?
cy.intercept() İstek Yaşam Döngüsü
Java'da network stub'lamak için WireMock/MockServer gibi ayrı bir HTTP sunucusu ayağa kaldırman, port çakışmalarını yönetmen ve testten önce/sonra başlatıp durdurman gerekir. Cypress'te cy.intercept() tarayıcının network katmanını doğrudan yakalar — ekstra sunucu yoktur.
Bu fark, Cypress'in "tek process içinde çalışma" mimarisinin doğrudan bir sonucudur — network katmanı zaten aynı tarayıcı içinde olduğu için yakalamak trivial hale gelir.