unit-testing - 如何检测 JEST 在模拟的依赖库中的调用?
问题描述
我有一个名为“api”的模块。它是一个带有定义拦截器的 axios 对象,如下所示:
import axios from 'axios'
import VueCookie from 'vue-cookie'
const api = axios.create(...)
api.interceptors.response.use(config => { ... }, error => {
if (error.response.data.error === 'some-error') {
VueCookie.set('error', 'some-error')
}
})
export default api
现在我想检测是否使用“错误”和“某些错误”调用了 VueCookie 设置方法。我怎样才能在我的测试中做到这一点?
现在我已经像下面那样模拟了 VueCookie,但我不知道如何访问这个模拟并在其上触发 expect().toHaveBeenCalledWith()。下面的解决方案不起作用。
const cookies = jest.mock('vue-cookie', () => {
return {
get: (key) => {
const cookies = {
timezone: 'Warsaw',
jwt: 'foo'
}
return cookies[key]
}
}
})
...
it('test', () => {
// calling interceptor
expect(cookies.set).toHaveBeenCalledWith('error', 'some-error')
})
问候
解决方案
如果我理解正确的话,应该验证的不是对象cookies
的set
方法。cookies
所以我建议用
it('test', () => {
// calling interceptor
expect(cookies.set).toHaveBeenCalledWith('error', 'some-error')
})
推荐阅读
- python - 如果值相同,切片会给出不正确的结果
- installation - 如何在 Cygwin 上安装和使用 Lex?
- android - 自定义 SwipeToRefresh 移动 RecyclerView Android 嵌套滚动
- scrapy - 如何在response.css中正确定义和scrapy中的yield
- r - 使用 ggplot2 为 R 中的离散变量创建小提琴图、宇宙飞船图或类似的东西
- xaml - 嵌套在水平 StackLayout 中时,多行标签不会调整父 StackLayout 的大小
- mysql - MySQL 8.0 和 PHP 的外键约束格式不正确
- android - Android Studio - 如何从命令行使缓存无效?
- javascript - Pandas DataFrame 打印为字符串
- .net-core - 需要帮助模拟界面