诺克没有 returns 设置 headers
Nock does not returns the setted headers
我正在使用 Nock
拦截 http 请求。
test.js:
const nock = require('nock');
const server = require('../server');
const request = require('request');
describe('My test', () =>{
it('Should returns the customized header', () => {
nock('url')
.get('/test')
.reply(302, {
'user-agent': 'Mozilla'
})
const { headers } = await request(server).get('/test');
expect(headers['user-agent']).to.include('Mozilla');
}
})
当我运行测试时,它失败了,request
收到的headers的日志是这样的:
{
'user-agent': 'node-superagent/3.8.3',
location: 'undefined',
vary: 'Accept, Accept-Encoding',
'content-type': 'text/plain; charset=utf-8',
'content-length': '31',
date: 'Fri, 24 May 2019 09:15:46 GMT',
connection: 'close'
}
我是不是漏掉了什么,或者这是 Nock
的正常行为?
问题在于您将 headers 传递给回复函数的方式。 Headers 是该方法的第三个参数,但您将它们作为第二个参数提供,这意味着 object 和 user-agent
键被用作 body .因为它是一个 302,你可能想要一个空的 body,你应该传递一个空字符串作为第二个参数。
nock('url')
.get('/test')
.reply(302, '', {
'user-agent': 'Mozilla'
})
我正在使用 Nock
拦截 http 请求。
test.js:
const nock = require('nock');
const server = require('../server');
const request = require('request');
describe('My test', () =>{
it('Should returns the customized header', () => {
nock('url')
.get('/test')
.reply(302, {
'user-agent': 'Mozilla'
})
const { headers } = await request(server).get('/test');
expect(headers['user-agent']).to.include('Mozilla');
}
})
当我运行测试时,它失败了,request
收到的headers的日志是这样的:
{
'user-agent': 'node-superagent/3.8.3',
location: 'undefined',
vary: 'Accept, Accept-Encoding',
'content-type': 'text/plain; charset=utf-8',
'content-length': '31',
date: 'Fri, 24 May 2019 09:15:46 GMT',
connection: 'close'
}
我是不是漏掉了什么,或者这是 Nock
的正常行为?
问题在于您将 headers 传递给回复函数的方式。 Headers 是该方法的第三个参数,但您将它们作为第二个参数提供,这意味着 object 和 user-agent
键被用作 body .因为它是一个 302,你可能想要一个空的 body,你应该传递一个空字符串作为第二个参数。
nock('url')
.get('/test')
.reply(302, '', {
'user-agent': 'Mozilla'
})