无法用 nock 模拟 POST 请求
Unable to mock POST request with nock
我正在使用 fetch API 和 nock 来模拟 post 请求。测试看起来像这样:
it('should handle the triple bracket replacements ', async () => {
nock('https://jives.dev')
.post('/', {
bestCat: 'cat'
})
.reply(200, {
data: '12345'
})
const data = await retrieveData({
endpoint: 'https://jives.dev/',
configuration: JSON.stringify({
method: 'POST',
body: {
bestCat: 'cat'
}
}),
auth: {cat: 'cat'}
})
expect(data).toEqual({data: '12345'})
})
retrieveData
函数运行 fetch
,并简单地将端点和配置参数映射到请求中,如下所示:
fetch('https://jives.dev/', {
method: 'POST',
body: {
bestCat: 'cat'
}
})
我最终收到一个错误,好像 nock 没有模拟请求。我可以让它为 get
请求工作,但我不确定为什么这在这个例子中不起作用。错误消息看起来像是在尝试实际发出 post 请求,而不是从箭尾返回数据。
- Expected - 3
+ Received + 1
- Object {
- "data": "12345",
- }
+ [Error]
这是因为我没有清理 jest 套件中的所有 mock。以下解决了这个问题。
afterEach(nock.cleanAll)
afterAll(nock.restore)
我正在使用 fetch API 和 nock 来模拟 post 请求。测试看起来像这样:
it('should handle the triple bracket replacements ', async () => {
nock('https://jives.dev')
.post('/', {
bestCat: 'cat'
})
.reply(200, {
data: '12345'
})
const data = await retrieveData({
endpoint: 'https://jives.dev/',
configuration: JSON.stringify({
method: 'POST',
body: {
bestCat: 'cat'
}
}),
auth: {cat: 'cat'}
})
expect(data).toEqual({data: '12345'})
})
retrieveData
函数运行 fetch
,并简单地将端点和配置参数映射到请求中,如下所示:
fetch('https://jives.dev/', {
method: 'POST',
body: {
bestCat: 'cat'
}
})
我最终收到一个错误,好像 nock 没有模拟请求。我可以让它为 get
请求工作,但我不确定为什么这在这个例子中不起作用。错误消息看起来像是在尝试实际发出 post 请求,而不是从箭尾返回数据。
- Expected - 3
+ Received + 1
- Object {
- "data": "12345",
- }
+ [Error]
这是因为我没有清理 jest 套件中的所有 mock。以下解决了这个问题。
afterEach(nock.cleanAll)
afterAll(nock.restore)