gpt4 book ai didi

unit-testing - 为什么 TypeError : axios. create 不是函数?测试axios GET时

转载 作者:行者123 更新时间:2023-11-28 19:46:51 25 4
gpt4 key购买 nike

我正在尝试在 React 中测试我的 axios API 函数。

在这里找到这个问题:how do i test axios in jest指向使用 axios-mock-adapter

import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import chatbot from './chatbot';

describe('Chatbot', () => {
it('returns data when sendMessage is called', done => {
var mock = new MockAdapter(axios);
const data = { response: true };
mock.onGet('https://us-central1-hutoma-backend.cloudfunctions.net/chat').reply(200, data);

chatbot.sendMessage(0, 'any').then(response => {
expect(response).toEqual(data);
done();
});
});
});

真正的功能:

/**
* Retrieve all Akamai images
* @param {String} akamai Akamai url
* @return {Thenable} Resolved: Akamai images
*/
export const callGetAkamai = () =>
makeRequest('/akamai', 'GET')
.catch(defaultCatch('callGetAkamai'));

我的测试:

import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import { callGetAkamai } from './api';

describe('GetAkamai', () => {
it('returns data when callGetAkamai is called', (done) => {
console.log('MockAdapter', MockAdapter);
const mock = new MockAdapter(axios);
// const mock = axios.create({
// baseURL: 'https://us-central1-hutoma-backend.cloudfunctions.net/chat/'
// });

const data = { response: true };
mock.onGet('https://us-central1-hutoma-backend.cloudfunctions.net/chat').reply(200, data);

callGetAkamai().then((response) => {
expect(response).toEqual(data);
done();
});
});
});

enter image description here

最佳答案

你已经在 mock axios 了吗?我自己也遇到过这个问题,在查看了所有错误的地方之后,我意识到我已经在用 jest 来模拟 axios 了。

将以下代码片段放入您的 setupTestFrameworkScriptFile :

const mockNoop = () => new Promise(() => {});

// Notice how `create` was not being mocked here...
jest.mock('axios', () => ({
default: mockNoop,
get: mockNoop,
post: mockNoop,
put: mockNoop,
delete: mockNoop,
patch: mockNoop
}));

虽然您可以同时执行这两项操作,但如果您使用的是 axios-mock-adapter,您可能希望删除其他模拟(并跳过上面的代码片段)。

关于unit-testing - 为什么 TypeError : axios. create 不是函数?测试axios GET时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49413937/

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