我有一个中间件,可以通过请求与第三方服务执行身份验证。我通过超级代理执行此请求。显然,我想在测试中对此进行模拟,因为它会使它们的运行速度大大降低,并且还依赖于第三方服务器。
使用nock时,似乎根本找不到请求。我什至尝试使用记录器,它仅能接收本地端点的实际请求。 (尽管它使用了不熟悉的IP和端口?)。
我的中间件中的请求;
export default async (req, res, next) => {
const user = await superagent
.get(`https://example.com/session/`)
.query({ session })
.set('Api-Key', '1234');
}
我的Nock实例;
nock('https://example.com/session/')
.persist()
.get('/session/')
.reply(200, {
success: true,
username: 'testuser',
})
.log(console.log);
答案 0 :(得分:2)
您在这里有2个问题。
首先,您定义两次/session/
:
nock('https://example.com/session/')
.get('/session/')
选择:
nock('https://example.com').get('/session/')
nock('https://example.com/session/').get('/')
第二个问题,您正在向呼叫(.query({ session })
)添加查询字符串,但是您没有使用.query(true)
告诉Nock。
最后,您应该具有以下内容:
nock('https://example.com/session/')
.persist()
.get('/') // rewrote here
.query(true) // added here
.reply(200, {
success: true,
username: 'testuser',
})
.log(console.log);