如何解决如何在TypeScript中使用Mocha模拟axios依赖关系?
这是我的示例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依赖项创建模拟和存根。
解决方法
对于typetript中的模拟/存根轴,我建议axios-mock-adapter,对于期望函数chai
这里是如何执行此操作的示例
request.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;
main.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;
}
main.spec.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();
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。