问题描述
在 Jest 中有什么方法可以模拟插件中声明的全局函数吗? 我使用注入声明名为 reqApi 的全局函数,并通过 $reqApi 在商店中使用它 现在,当我使用 jest 测试我的组件时出现此错误:
TypeError: this.$reqApi is not a function
210 | isUserExist({ },{ email }) {
211 | return new Promise((resolve,reject) => {
> 212 | this.$reqApi("/express-customer/is-user-exist/",{
| ^
213 | email
214 | }).then(res => {
215 | resolve(res)
inject('reqApi',(url,data = {},method = "POST",config = {},getonlyData = true) => {
if (method == "POST") {
return new Promise((resolve,reject) => {
$axios.$post(url,data,config)
.then((response) => {
if (response) {
resolve(response)
} else {
// store.dispatch('addNotification',{
// message: errorMessage
// })
reject()
}
return
})
.catch((error) => {
// console.log(error);
// store.dispatch('addNotification',{
// message: errorMessage
// })
reject(error)
})
})
} else if (method == "GET") {
return new Promise((resolve,reject) => {
$axios.$get(url)
.then((response) => {
if (response) {
resolve(response)
} else {
// store.dispatch('addNotification',{
// message: errorMessage
// })
reject()
}
return
})
.catch((error) => {
// console.log(error);
// store.dispatch('addNotification',{
// message: errorMessage
// })
reject(error)
})
})
} else if (method == "PUT") {
return new Promise((resolve,reject) => {
$axios.$put(url,data)
.then((response) => {
if (response) {
resolve(response)
} else {
// store.dispatch('addNotification',{
// message: errorMessage
// })
reject()
}
return
})
.catch((error) => {
reject(error)
})
})
} else {
return new Promise((resolve,reject) => {
$axios.$delete(url,{ data: data })
.then((response) => {
if (response) {
resolve(response)
} else {
// store.dispatch('addNotification',{
// message: errorMessage
// })
reject()
}
return
})
.catch((error) => {
reject(error)
})
})
}
})
这是我在 vuex 中的操作,我用它来访问名为 $reqApi 的全局函数:
isUserExist({ },{ email }) {
return new Promise((resolve,reject) => {
this.$reqApi("/express-customer/is-user-exist/",{
email
}).then(res => {
resolve(res)
})
.catch(error => reject(error))
})
},
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)