javascript - Nock 不返回设置的 header

标签 javascript node.js mocha.js chai nock

我正在使用 Nock 拦截 http 请求。

测试.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 收到的 header 日志如下:

 { 

 '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 的正常行为?

最佳答案

问题在于您将 header 传递给回复函数的方式。 header 是该方法的第三个参数,但您将它们作为第二个参数提供,这意味着带有 user-agent 键的对象将用作主体。由于它是 302 并且您可能想要一个空正文,因此您应该传递一个空字符串作为第二个参数。

nock('url')
  .get('/test')
  .reply(302, '', {
    'user-agent': 'Mozilla'
  })

Related docs.

关于javascript - Nock 不返回设置的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56289822/

相关文章:

javascript - 测试失败 - 多次调用 Mocha 的 done()

javascript - Interactjs 与 SVG

javascript - 编写 CoffeeScript 函数将我的 json 数组转换为我想要的格式的简洁方法是什么

node.js - 为什么 Mocha 说我的测试通过了,而它不应该通过?

node.js - 无法将dockerized keystone 容器与dockerized mongo 容器连接

javascript - 403 使用 Cheerio 时禁止

ruby-on-rails - 在使用 capybara 进行集成测试时,在 rspec 中使用 mocha 模拟 api 调用

javascript - 如何每秒将变量增加 (x) 个单位,然后将变量与 Date() 一起使用来确定自月初以来的单位数

javascript - Polymer-Project 对象未在 OS X 10.10 中呈现

javascript - Node JS for 循环和数组推送