我有一个名为“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 set 方法是否被调用了 'error' 和 'some-error'。我怎样才能在我的测试中做到这一点?
现在我已经像下面那样模拟了 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
,而是cookies
对象的set
方法。
所以我建议用
it('test', () => {
// calling interceptor
expect(cookies.set).toHaveBeenCalledWith('error', 'some-error')
})
关于unit-testing - 如何通过 JEST 检测模拟依赖库中的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58396600/