Typescript 如何在TestCafe RequestMock中获得原始响应

Typescript 如何在TestCafe RequestMock中获得原始响应,typescript,testing,automated-tests,e2e-testing,testcafe,Typescript,Testing,Automated Tests,E2e Testing,Testcafe,Testcafe使您能够模拟请求的响应,这是我能够做到的 我想为所有GET/Ajax请求实现一个缓存系统 如果URL在缓存中,这可以正常工作,但是对于那些不在缓存中的URL,它返回一个空响应 这是因为(我想)我没有在缓存中找不到的URL上调用res.setBody() export const requestMock=requestMock() .onRequestTo({method'GET',isAjax:true}) .respond(异步(req:Request,res:Response

Testcafe使您能够模拟请求的响应,这是我能够做到的

我想为所有GET/Ajax请求实现一个缓存系统
如果URL在缓存中,这可以正常工作,但是对于那些不在缓存中的URL,它返回一个空响应

这是因为(我想)我没有在缓存中找不到的URL上调用res.setBody()

export const requestMock=requestMock()
.onRequestTo({method'GET',isAjax:true})
.respond(异步(req:Request,res:Response&{setBody:Function})=>{
常量url:string=req.url
试一试{
const body:string=wait cache.getItem(url)
如果(正文){
res.setBody(正文)
}      
}捕获(错误){
打印错误(错误)
}
})

如何获取原始的
响应.body
这样我就可以
res.setBody(originalBody)

这将需要您的代码实际首先获取数据,并将其添加到缓存中以备将来的请求但这不是嘲弄,这只是缓存。

考虑使用实际的模拟,例如,将对请求的响应存储在一些JSON文件中(或您在其中使用的任何格式),并在测试应用程序尝试向特定URL发出请求时返回此文件的内容

如果您仍然希望使用缓存解决方案,那么在
respond
回调中,您的代码应该检查缓存中是否有对该URL的响应。如果是,则从缓存返回正文(正如您现在所做的)。如果否,则发出此请求,将响应添加到缓存并返回响应


要发出请求,您可以使用
fetch
API(浏览器)或使用类似
axios
(Node.js runtime)的库。

您是对的,我不应该将此解决方案用于缓存。但我将应用这一逻辑。非常感谢。