gpt4 book ai didi

javascript - 在 JS 中模拟 API 调用

转载 作者:行者123 更新时间:2023-11-29 15:59:50 26 4
gpt4 key购买 nike

我需要为单击按钮模拟 API 调用,但实际调用嵌套在由中间件文件调用的实用程序文件中。一些框架代码使用了 Jest、axios-mock-adapter 和 Enzyme。 (我仍然在思考它们各自的作用)。

所以让我先介绍一下。我是一家公司的实习生,我的任务是为基于微服务架构构建的软件测试一些 JS 代码。所以首先让我为任何不当的措辞道歉。我的背景是 C/C++ 和 x86 汇编。不,我在申请这个职位时没有捏造简历。公司完全意识到我几乎没有 JS 经验。我试图创建一个 mock = MockAdapter('axios') 然后用 mock.OnGet().reply() 调用它但是在检查我的覆盖范围时它似乎每次都出错。

代码太多,我举个例子

class ComponentName extends component {
stuff
}

ComponentNameFunc {
this.middleware.funcName.then(
response ()=>{}
errorRespone ()={}
)
}


//funcName is a name of a middleware function that calls a function
//in the utility file. The utility file does the axios.get call

当我渲染组件然后模拟一个按钮时,它会调用 this.middleware.funcName 但随后覆盖显示它会转到 errorResponse 部分。这是一个测试例子

describe('test',()=>{
test('button click', done => {
mock.onGet('aURL').reply(200,mockData);
Enzyme.configure({ adapter: new Adapter() });
const wrapper = shallow(
<ComponentName/>);
expect(wrapper.exists()).toBe(true);
wrapper
.find("Button")
.at(0)
.simulate("click");
done();
)};
)};

编辑:所以我发现了部分问题。我有多个针对不同 API 调用的模拟,显然只有 1 个在注册。但是,我正在测试的其中一些函数将进行两次 API 调用。如何为单个测试模拟两个单独的 API 调用?原来我有这样的东西

import axios from "axios"
let mock = MockAdapter(axios);
let mock2 = MockAdapter(axios);


mock.OnGet("URL").reply(200,Data);
mock2.OnGet("URL2").reply(200,DifferentData);

最佳答案

所以我想通了。我试图制作多个模拟变量(或者它们是对象?),如 mock、mock2、mock3。似乎用不同的信息复制 mock.OnGet.reply 效果很好。

关于javascript - 在 JS 中模拟 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54496226/

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