javascript - 当 axios 请求位于帮助文件中时,开玩笑不模拟 axios 函数
问题描述
我已经让 Jest 成功模拟了我的测试函数的 axios 请求,但是它仅在从正在测试的组件调用 axios 本身时才有效。当我将其切换为使用Request.js
我创建的用于规范化请求的帮助文件 () 时,axios 请求不再被嘲笑。
在正在测试的组件中,我尝试像这样放置一个简单的 axios 请求:
axios.request({
url: '/test'
}).then(data => {
console.log("Mock data");
console.log(data);
})
这个请求工作正常,并被我的axios.js
文件嘲笑:
module.exports = {
get: jest.fn(() => Promise.resolve({
status: 200,
payload: {}
}
)),
request: jest.fn(() => Promise.resolve("Hello World"))
};
当我注销对请求的响应时,它会返回“Hello World”,这是预期的行为,并表明它被正确地模拟了。
但是,当我为我的助手切换它时,请求不再被嘲笑。
Request.get(routes.client.info)
.then(data => {
console.log("DATA");
console.log(data);
})
.catch(err => console.log(err));
.get 方法存在于 Request 类中,如下所示:
static get(url, {params = {}, headers = {}} = {}, returnFullResponse = false) {
return this.request(url.get || url, {
method: "GET",
body: {},
headers,
params
}, returnFullResponse);
}
该方法执行request
执行 axios 请求的方法:
static request(url, {method, body = {}, headers = {}, params = {}}, returnFullResponse) {
return new Promise((resolve, reject) => {
axios.request({
url,
method,
responseType: 'json',
data: body,
headers,
params
})
.then(result => {
if(GLOB_VARS && GLOB_VARS.debugMode) {
super.logRequest(url, method, result.data);
}
result = returnFullResponse ? result : result.data;
resolve(result);
})
.catch(err => {
if(err.response && err.response.status && err.response.statusText) {
super.logError(url, err.response.status, err.response.statusText);
const { status, statusText, data } = err.response;
reject({
status: status,
message: statusText,
data: data
});
}
else {
reject({
status: null,
message: err
})
}
})
});
}
我不确定为什么它没有像在我的组件文件中那样被模拟我可以成功地模拟request
Axios 上的方法但是当我使用帮助器发出请求时,我undefined
从 axios 返回输出。
有任何想法吗?
解决方案
推荐阅读
- jira - EPIC 状态的 JIRA webhook 问题
- java - 为什么 0042 听起来 34 到 int?
- node.js - 安装节点蓝牙包时出错?
- sql-server - 提取字符串中第二次出现的字符的权利
- python - Pandas - 在带有 numpy 数组的 MultiIndexed DataFrame 上执行 mean()
- python - 错误的维度数:预期 1,得到 2
- layout - R Shiny Dashboard Header 下拉按钮导致滚动
- spring-boot - Gradle 多模块项目 java.lang.NoClassDeffFoundError
- dependencies - 如何在不覆盖依赖项的情况下安装 Chocolatey 包?
- javascript - 基于 NativeScript Vue Auth 的导航