如何通过JEST在模拟的依赖库中检测调用?

时间:2019-10-15 14:05:51

标签: unit-testing vue.js testing jestjs vue-test-utils

我有一个名为“ 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')
})

致谢

1 个答案:

答案 0 :(得分:0)

如果我正确理解,应该验证的不是cookies对象的set方法,而是cookies对象。 所以我建议用

检查一下
it('test', () => {
    // calling interceptor
    expect(cookies.set).toHaveBeenCalledWith('error', 'some-error')
})
相关问题