gpt4 book ai didi

javascript - 如何在 TypeScript 中使用 mocha 模拟 axios 依赖?

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

这是我的示例 src/main.ts 文件

import axios from 'axios';
export async function main() {
const URL = 'test url';
const secretKey = 'Test key'
const response = await axios.get(URL, {
headers: { 'Content-Type': 'application/json', 'KEY': secretKey },
});

我想使用 mocha 在 spec/test.ts 文件中编写我的测试用例。谁能告诉我如何为 axios 依赖创建模拟和 stub 。

最佳答案

对于 typestript 中的 mock/stub axios,我推荐 axios-mock-adapter , 对于期望函数 chai

这是一个如何做到这一点的例子

请求.ts

import axios from 'axios';

const apiConfig = {
returnRejectedPromiseOnError: true,
timeout: 30000,
headers: {
common: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
},
};

const request = axios.create(apiConfig);
export default request;

主要.ts

import request from './request';

export const URL = 'https://httpbin.org/get';
export const secretKey = 'secret_key';

export async function main() {

const response = await request.get(URL, {
headers: {
KEY: secretKey,
},
});

// response logic

return response;
}

主要规范.ts

import MockAdapter from 'axios-mock-adapter';
import { expect } from 'chai';

import request from './request';
import { main, URL, secretKey } from './main';


describe('Request test', () => {
let stub: MockAdapter;
const receivedData = { data: 'data' };

before(() => {
stub = new MockAdapter(request);
stub.onGet(URL, {
headers: {
KEY: secretKey,
},
}).replyOnce(200, receivedData);
// replyOnce if you assume that your code sends a single request
});

it('test', async () => {
const response = await main();

expect(response.status).to.be.equal(200);
expect(response.data).to.be.deep.equal(receivedData);
});

after(() => {
stub.restore();
});
});

关于javascript - 如何在 TypeScript 中使用 mocha 模拟 axios 依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63404316/

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