gpt4 book ai didi

axios - 你如何配置 axios 在 jest 中运行以在 POST 之前不发送选项?

转载 作者:行者123 更新时间:2023-12-05 02:51:08 29 4
gpt4 key购买 nike

从 node.js 这按预期工作,发送了一个 POST 响应(正如我用 httpToolkit 验证的那样)

% node
> const axios = require('axios')
> var r = (async () => { const x = await axios.post('http://example.com/v1/secret/data/foo/bar/baz',{data: {foo: 42}},{headers: {'X-Special-Token': 'DATA'}}); return true;})().then(console.log)
undefined
> true

但随后在 jest 测试中做同样的事情,axios 首先发送一个 OPTIONS 请求。我正在运行的服务无法处理(不是 example.com)

const axios = require('axios');

describe('Simple Post', () => {
test('POST', async () => {
// Axios HERE seems to send an OPTIONS request first...
const x = await axios.post('http://example.com',
{data: {foo: 42}},
{headers: {'X-Special-Token': 'DATA'}});
expect(x.status).toBe(200);
});
});

有什么方法可以说服/配置jestaxios 以便axios 不会神奇地决定发送OPTIONS? 这与 CORS 无关 - 它的服务器代码与服务器代码通信,但显然 axios 中的某些东西决定它是合适的。

最佳答案

阅读此 issue我的问题的解决方案就是下面的标题。看 Jest test-environment .这个问题确实有很多关于不同关注点的讨论,所以 YMMV。

/**
* This is required to prevent axios from acting like it is in a browser
* environment and doing OPTIONS preflights, etc.
*
* @jest-environment node
*/
const axios = require('axios');

describe('Simple Post', () => {
test('POST', async () => {
// No preflight OPTIONS request sent when jest-environment is node
const x = await axios.post('http://example.com',
{data: {foo: 42}},
{headers: {'X-Special-Token': 'DATA'}});
expect(x.status).toBe(200);
});
});

关于axios - 你如何配置 axios 在 jest 中运行以在 POST 之前不发送选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63318748/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com