Javascript测试 - 使用axios验证Authorization标头是否正确

时间:2016-09-08 19:52:02

标签: javascript testing mocking sinon axios

我使用axios拦截器在请求标头中设置授权令牌。

axios.interceptors.request.use(config => {
  config.headers.Authorization = 'Bearer ' + Auth.getToken()
  return config
})

如何测试我的请求是否在标头中以正确的标记发送?

Ps。:我使用的是Mocha + Chai

2 个答案:

答案 0 :(得分:3)

使用axios-mock-adapter模拟Axios,并从配置对象中获取请求信息:

.reply((config) => {})

示例:

import MockAdapter from 'axios-mock-adapter'

const axiosMock = new MockAdapter(axios)

axiosMock.onGet('https://api.com').reply((config) => {
    return [200, { requestHeaders: config.headers }]
});

const response = await axiosWrapper.get('https://api.com')
expect(response.data.requestHeaders['Authorization'] === 'AUTH_TOKEN')

要测试正确的标记是否在标题中,集成测试会更加合适。当标题中包含正确的标记时,API响应应该与将不正确的标记与API请求一起发送时不同。

答案 1 :(得分:-2)

如果您想在响应中测试标题,可以执行以下操作:

    const mock = new MockAdapter(axios);
    mock.onGet('/anon/getUser').reply(200, {/*response.data*/}, {'my-header-key': 'my-value' });