typescript - fetch-mock ile isteğin gövdesi nasıl alınır


Gövdesinde parametreler olan bir post isteğini taklit etmek için fetch-mock kullanan testlerim var.

İsteği taklit edebilirim ama isteğin gövdesine göre bir yanıt döndürmenin bir yolunu bulamıyorum.

Diyelim ki şununla bir POST isteğim var:

const body = {flag : true} // can be either true or false
const configInit: RequestInit = {
        method: "POST",
        credentials: "include",
        body: JSON.stringify(body)
    };

fetch(REQUEST_URL, configInit)

Şu anda sahteğim şöyle görünüyor:

//.. some definithion of responseA and responseB 
fetchMock.post(
                REQUEST_URL,
                (url, opts) =>  opts && opts.body && opts.body.flag ? responseA : responseB ,
                { overwriteRoutes: true }
);

Ama opts.body'nin bir 'BodyInit' nesnesi olduğunu ve 'flag' özelliğine sahip olmadığını söylüyor.

Dökümantasyonu buldum ama bunu yapmanın doğru yolunu hiçbir yerde bulamadım. İstekten parametreleri sahte yanıtıma nasıl alabilirim? Bu yol en iyi uygulama mı? Belki istekleri bir FunctionMatcher kullanarak ayırmalıyım (ki bu da benim için çalışmıyor).

Cevap #1

En iyi desenin ne olduğundan emin değilim ama benim hızlı çözümüm, BodyInit'in sağladığı toString() metodunu çağırmak; örneğin:

fetchMock.get('someUrl', (_, opts) => {
  const body = JSON.parse(opts.body.toString())
})

Eksik cevap için özür dilerim, umarım yolunuza devam etmenize yetecek kadardır.