3

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

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

如何测试我的请求是否在标头中使用正确的令牌发送?

Ps.:我正在使用 Mocha + Chai

4

2 回答 2

6

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

.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 的请求发送不正确的令牌时的响应。

于 2016-11-04T12:36:42.617 回答
-2

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

    const mock = new MockAdapter(axios);
    mock.onGet('/anon/getUser').reply(200, {/*response.data*/}, {'my-header-key': 'my-value' });
于 2017-01-18T19:02:03.100 回答