gpt4 book ai didi

typescript - 如何将缓冲区请求主体与 Mock Service Worker 匹配

转载 作者:行者123 更新时间:2023-12-05 06:50:52 25 4
gpt4 key购买 nike

我目前正在使用 Nock并想用 Mock Service Worker 替换它.
使用 Nock,我能够将字符串化的请求主体与提供的缓冲区相匹配:

const request = nock(hostname)
.post('/api/instance', Buffer.from(arrayBuffer))
.reply(201, json);

我还没有弄清楚如何使用 mws 获得相同的结果,因为请求正文和缓冲区不相等。有人可以帮助我吗?
谢谢。

最佳答案

AmD.

首先,request matching在 MSW 中,有意仅限于方法和 URL 匹配。然而,这并不意味着您不能在需要时实现更复杂的匹配逻辑。您可以将它写在您的请求处理程序中:

rest.post('/api/instance', (req, res, ctx) => {
if (someMatchCriteria) {
return res(ctx.text('hello world'))
}
})

For example, in this handler only the requests that match someMatchCriteria will use the mocked response. All the other (non-matching) requests will be passthrough.

您可以通过req.body 访问文本请求正文。 MSW 将所有请求主体转换为纯文本,以便通过消息 channel 将其发送给工作人员。您可以将该文本转换为 Buffer 并自己进行比较。

rest.post('/api/instance', (req, res, ctx) => {
const encoder = new TextEncoder()
const text = req.body
const buffer = encoder.encode(text)

if (buffer === expectedBuffer) {
return res(ctx.text('mocked response'))
}
})

You may use other means to convert text to buffer. If the buffer lengths/content don't match, it likely means the conversion solution you're using does not produce the correct buffer representation of the request body string.

关于typescript - 如何将缓冲区请求主体与 Mock Service Worker 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66301147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com