javascript - 在路由内部模拟一个 api 函数调用而不实际调用它
问题描述
我的 api 中有一条路由,它调用另一台服务器,我遇到了一个问题,我无法测试、模拟已解析的值,用于另一台服务器调用。无论我如何处理,单元测试似乎总是调用另一台服务器。
let iAgent: PartialMock<InternalAgent>;
beforeEach(() => {
iAgent = {
extend: jest.fn()
};
});
if(iAgent.extend) {
iAgent.extend.mockResolvedValue({});
}
const r = await request.post('/api/v1/webhooks/extend')
.send({
id: 1
});
expect(r.status).toEqual(200);
expect(iAgent.extend).toBeCalledTimes(1);
在我的实际路线中,它每次都调用它:
await iAgent.extend();
并且由于另一台服务器未运行而在此行失败,并且我收到拒绝连接的消息。显然,该iAgent.extend
函数甚至没有被调用一次,而是设法返回拒绝。
因此,无论如何,我相信它不应该在我的路由中调用实际函数并跳过它,如果我理解正确,它会回到我在测试中解决的值,但事实并非如此,我不知道如何继续。
哦,只是为了清楚if
我的检查mockResolvedValue
,这只是为了暂时避免在我的配置中进行严格的空检查。但是我已经登录了条件,它确实模拟了这个值
解决方案
哦,男孩,我错过了这个。这里的问题是我的路由在所有应用程序中都使用相同的类实例,而我的单元测试试图模拟它的另一个实例——这就是为什么在调用其他服务器时在路由函数中没有使用解析的值.
因此,只需使用该代理类的相同实例,我就可以轻松获得我的模拟值
推荐阅读
- javascript - 如何在 nodejs 中使用 morgan 和 winston.js 格式获取 OriginURL?
- bash - grep 目录中的文件名
- android - java.security.NoSuchAlgorithmException:没有这样的算法:提供者 BC 的 ECDSA
- sql - 具有两个自连接的 SQL 查询 - 有没有更好的方法
- mfc - CListCtrl:在 HeaderControl 上获取 DblClick
- html - 文件输入类型在 Chrome 上消失
- javascript - 面板标题后跟下拉菜单 [Indesign scripting]
- python - 在 Python 3 中整齐地显示 .pkl 文件
- excel - 数据未通过验证测试时的最佳处理
- c# - c#尝试将XML解析为ListBox时超出范围